Ubuntu系统的Shell命令及脚本编程.doc_第1页
Ubuntu系统的Shell命令及脚本编程.doc_第2页
Ubuntu系统的Shell命令及脚本编程.doc_第3页
Ubuntu系统的Shell命令及脚本编程.doc_第4页
Ubuntu系统的Shell命令及脚本编程.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Ubuntu系统的Shell命令及脚本编程 Shell是Linux的命令解释器,是连接用户和内核的桥梁。Linux命令通过Shell传给内核,内核执行命令并将结果返回给Shell,Shell再把结果输出到显示器或其他设备。常用Shell有bash、csh、ksh,Ubuntu默认的Shell是bash。一、变量与特殊字符1)局部变量:在设定此变量的Shell中有效例1:设定局部变量ylsy、显示变量值、取消变量。zgjwildgrass:$ ylsy=Yulin Normal University zgjwildgrass:$ echo $ylsy Yulin Normal University zgjwildgrass:$ unset ylsy 2)环境变量:在整个系统环境中有效查看环境变量envzgjwildgrass:$ env 常用环境变量说明:SHELL=/bin/bash -当前使用的shellUSER=zgj -当前登录的用户名PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games -命令执行时的搜索路径PWD=/home/zgj -当前工作目录LANG=zh_CN.UTF-8 -当前的语系3)参数变量与特殊变量Shell命令格式: 命令名 选项 参数1 参数2.参数变量的表示方法:$0:表示执行的程序名$1-$9:表示传给程序的第1个-第9个参数$大于9的数字:表示第10个、11个参数.特殊变量的表示方法:$#:表示参数变量的个数$*:表示所有的参数变量$:表示所有参数变量的值$:当前Shell的PID(进程ID)值$?:最近一个执行过的命令的返回值例2:编写脚本程序,测试参数变量与特殊变量的值编写脚本程序myshell1.sh:zgjwildgrass:/UbunFiles$ gedit myshell1.sh #!/bin/bash echo $1 $2 echo $0 echo $# echo $ echo $ echo $?执行脚本程序myshell1.sh:zgjwildgrass:/UbunFiles$ ./myshell1.sh Hello BoysAndGirls 4)特殊字符“”(双引号)中出现的 单引号、$、作为特殊字符zgjwildgrass:/UbunFiles$ version=Ubuntu 12.04 LTS zgjwildgrass:/UbunFiles$ echo version is: $version version is: Ubuntu 12.04 LTS zgjwildgrass:/UbunFiles$ echo version is:$version version is:$version zgjwildgrass:/UbunFiles$ echo version is:$version version is:Ubuntu 12.04 LTS 二、通配符与正则表达式1)?:匹配一个字符2)*:匹配多个字符3):匹配里指定字符范围的任意一个字符4)! 或:表示不匹配里指定字符范围的所有字符例3:显示以exp开头,第4个字符为数字0-9,扩展名的第1个字符不是r-z、第2个字符不是o或x的所有文件和目录信息。zgjwildgrass:/UbunFiles$ ls exp0-9*.!r-zR-ZoOxX* exp0.cp exp3.java exp5.1ps exp5a.cs exp5b.ja exp7.cpp exp8.dt exp9.cbp5)正则表达式grep 正则表达式 filename :显示与 正则表达式 匹配的文件信息。zgjwildgrass:/UbunFiles$ grep Happy *.* myshell2.sh:echo Happy Spring Festival! myshell2.sh:echo Happy Spring Festival! zgjwildgrass:/UbunFiles$ grep 排序 *.* exp1.c: printf(排序前:); exp1.c: printf(n排序后:); 三、命令的执行顺序1) cmd1 & cmd2 & cmd3 &.:cmd1执行成功才执行cmd2,cmd2执行成功才执行cmd3.zgjwildgrass:/UbunFiles$ mkdir testcmd & cd testcmd & pwd /home/zgj/UbunFiles/testcmd zgjwildgrass:/UbunFiles/testcmd$ 2) cmd1|cmd2|cmd3|. :cmd1执行失败才执行cmd2, cmd2执行失败才执行cmd3.zgjwildgrass:/UbunFiles$ mkdir testcmd | cd test | pwd 3) cmd1;cmd2;cmd3;. :连续执行cmd1,cmd2,cmd3.zgjwildgrass:/UbunFiles$ mkdir testcmd ; cd testcmd ; pwd mkdir: 无法创建目录testcmd: 文件已存在 /home/zgj/UbunFiles/testcmd zgjwildgrass:/UbunFiles/testcmd$ 四、I/O重定向与管道重定向Linux使用0表示标准输入、1表示标准输出、2表示标准错误输出。可以重新指定输入输出,():表示输出重定向。zgjwildgrass:/UbunFiles$ ls -l lsubu.txt 2:标准错误输出重定向zgjwildgrass:/UbunFiles$ cd test 2err.txt zgjwildgrass:/UbunFiles$ cat err.txt bash: cd: test: 没有那个文件或目录 管道(|)一个命令的输出作为另一个命令的输入。五、Shell脚本编程1. Shell脚本程序的编写1)脚本的第一行一般写上”#!/bin/bash”,指明此脚本使用bash解释执行。2)如果在一行之前使用 了“#”字符,则该行是注释。2. 脚本程序的执行过程1)编写脚本:zgjwildgrass:/UbunFiles$ gedit myshell2.sh 2)默认的脚本程序权限为-rw-rw-r-,因此需要修改,添加“执行x”权限才能执行:zgjwildgrass:/UbunFiles$ chmod 755 myshell2.sh zgjwildgrass:/UbunFiles$ ls -l myshell2.sh -rwxr-xr-x 1 zgj zgj 65 2月 16 20:36 myshell2.sh 3)执行Shell脚本程序方法1:zgjwildgrass:/UbunFiles$ ./myshell2.sh 春节快乐! Happy Spring Festival! 方法2:zgjwildgrass:/UbunFiles$ bash myshell2.sh 春节快乐! Happy Spring Festival! 3. 编写交互式脚本read -p “字符串” 变量名例4:编写一个简单的交互式脚本程序zgjwildgrass:/UbunFiles$ gedit myshell2.sh zgjwildgrass:/UbunFiles$ bash myshell2.sh 4. 在脚本中使用数值变量和数组例5:zgjwildgrass:/UbunFiles$ gedit myshell3.sh zgjwildgrass:/UbunFiles$ bash myshell3.sh 5. 逻辑判断与逻辑表达式格式一:test 条件格式二: 条件 1)对字符串进行判断 str1 = str2 :相等为真 str1 != str2 :不相等为真 -z str :str长度为零则为真 -n str :str长度不为零则为真注:各选项之间用空格隔开例6:zgjwildgrass:/UbunFiles$ gedit myshell4.sh zgjwildgrass:/UbunFiles$ ./myshell4.sh 2)对整数进行判断 int1 -eq int2 :相等为真 int1 -ne int2 :不相等为真 int1 -gt int2 :int1int2为真 int1 -ge int2 :int1=int2为真 int1 -lt int2 :int1int2为真 int1 -le int2 :int12 and 2=17 3)对文件的类型和属性进行判断 -e file :file存在为真 -f file :file是一个普通文件为真 -d dir :dir是一个目录为真 -L file :file是一个链接文件为真 -r file :file可读为真 -w file :file可写为真 -x file :file可执行为真注:各选项之间用空格隔开例8:zgjwildgrass:/UbunFiles$ gedit myshell6.sh zgjwildgrass:/UbunFiles$ ./myshell6.sh hello.java LnkSoftware main.c6. 多分支条件语句case格式:case 变量 invalue1) command1 ;value2) command2 ;.*) commandn ;esac注:每个case语句块之后用;结束例9:zgjwildgrass:/UbunFiles$ gedit myshell7.sh zgjwildgrass:/UbunFiles$ sh myshell7.sh main.c 7. 循环语句for、while、until1)for语句格式1: for 变量 in 变量值1 变量值2 do command done格式2: for ( i=1; i=100; i+ ) do command done 注:( 与 )不能用空格分开例10:zgjwildgrass:/UbunFiles$ gedit myshell8.sh zgjwildgrass:/UbunFiles$ bash myshell8.sh 2)while与until语句格式:while 条件 do commanddone注:条件成立时循环执行command,break退出循环until 条件 do commanddone注:条件不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论