ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:25.28KB ,
资源ID:11537216      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11537216.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SHELL编程实用教程.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SHELL编程实用教程.docx

1、SHELL编程实用教程SHELL编程Bash编程手册= SHELL编程 =一、Shell语法1.1、变量声明1.2、数组声明和使用1.3、特殊的变量1.4、运算和运算符1.4.1、整数运算符1.5、流程语句1.5.1、if 语句1.5.2、case语句1.5.3、select 语句1.6、循环语句1.6.1、for语句1.6.2、while 语句1.6.3、breake 和continue1.6.4、shift二、函数三、shell程序调试四、信号五、bash中常用的命令= 一、Shell语法 =1.1、变量声明变量值 (注意:等号两侧不能有空格)a=”hello”b=9unset a 撤销变

2、量 areadonly a=2 声明静态的变量 a=2 ,不能 unsetexport 变量名 可把变量提升为全局环境变量,可供其他shell程序使用变量应用中要注意:echo “$1 = $1 ; $2 = $2 “; 屏蔽$1 ,屏蔽 $2 ,直接显示 $1 ,$2,同理*也屏蔽了 * 的通配符作用$SATday ,变量要与字符串连在一起时,应该用 $a= ls -al 反引号,运行里面的命令,并把结果返回给变量aa=$(ls -al) 等价于反引号单引号和双引号“”的区别,单引号完全屏蔽 $a 变量,双引号不屏蔽$a,单引号和双引号都屏蔽 * 的通配符作用。1.2、数组声明和使用1 na

3、me0=Tom2 name1=Tomy3 name2=John4 或5 name=(Tom Tomy John)例子:1 #!/bin/bash2 name=(Tom Tomy John)3 for i in 0 1 24 do5 echo $i:$name$i6 done1.3、特殊的变量$0:脚本名字。此变量包含地址,可以使用basename $0获得脚本名称。$1:第一个参数$2,$3,$4,$5,一次类推。$# 传递到脚本的参数个数$* 以一个单字符串显示所有向脚本传递的参数,,以(“$1 $2”)$ 脚本运行的ID号$! 后台运行的最后一个进程的ID号$ 与$*相同,但是使用时加引号

4、,并在引号中返回每个参数。(“$1”$2)$- 显示shell使用的当前选项。$? 显示最后命令的推出状况。0表示没有错误。例子: 1 #!/bin/sh 2 if $# -ne 2 ; then 3 echo Usage: $0 string file; 4 exit 1; 5 fi 6 grep $1 $2 ; 7 if $? -ne 0 ; then 8 echo Not Found $1 in $2; 9 exit 1;10 fi11 echo Found $1 in $2;上面的例子中使用了$0 $1 $2 $# $? 等变量,下面是程序的解释:判断运行参数个数,如果不等于2,显示使

5、用”用法帮助”, 其中 $0 表示就是脚本自己。用grep 在$2 文件中查找$1 字符串。判断前一个命令运行后的返回值(一般成功都会返回0, 失败都会返回非0)。如果没有成功显示没找到相关信息,否则显示找到了。其中”表示转义,在” 里面还需要显示”号,则需要加上转义符”参数置换的变量1、变量=$参数:-word:如果设置了参数,则用参数的值置换变量的值,否则用word置换。即这种变量的值等于某一个参数的值,如果该参数没有设置,则变量就等于word的值。 -z $COLUMNS:- & COLUMNS=802、变量=$参数:=word:如果设置了参数,则用参数的值置换变量的值,否则把变量设置成

6、word,然后再用word替换参数的值。注意,位置参数不能用于这种方式,因为在Shell程序中不能为位置参数赋值。3、变量=$参数:?word:如果设置了参数,则用参数的值置换变量的值,否则就显示word并从Shell中退出,如果省略了word,则显示标准信息。这种变量要求一定等于某一个参数的值。如果该参数没有设置,就显示一个信息,然后退出,因此这种方式常用于出错指示。4、变量=$参数:+word:如果设置了参数,则用word置换变量,否则不进行置换。字符串匹配的操作:$PARAMETER#WORD shell 像文件名扩展中那样扩展 WORD,并从 PARAMETER 扩展后的值的开头删除最

7、短的匹配模式(若存在匹配模式的话)。使用 或 $ 即可删除列表中每个参数的模式。$PARAMETER#WORD 导致从开头删除最长的匹配模式而不是最短的匹配模式。$PARAMETER%WORD shell 像文件名扩展中那样扩展 WORD,并从 PARAMETER 扩展后的值末尾删除最短的匹配模式(若存在匹配模式的话)。使用 或 $ 即可删除列表中每个参数的模式。$PARAMETER%WORD 导致从末尾删除最长的匹配模式而不是最短的匹配模式。$PARAMETER/PATTERN/STRING shell 像文件名扩展中那样扩展 PATTERN,并替换 PARAMETER 扩展后的值中最长的匹

8、配模式(若存在匹配模式的话)。为了在 PARAMETER 扩展后的值开头匹配模式,可以给 PATTERN 附上前缀 #,如果要在值末尾匹配模式,则附上前缀 %。如果 STRING 为空,则末尾的 / 可能被忽略,匹配将被删除。使用 或 $ 即可对列表中的每个参数进行模式替换。$PARAMETER/PATTERN/STRING 对所有的匹配(而不只是第一个匹配)执行替换。變數設定方式 str 沒有設定 str 為空字串 str 已設定非為空字串 1 var=$str-expr var=expr var= var=$str 2 var=$str:-expr var=expr var=expr va

9、r=$str 3 var=$str+expr var= var=expr var=expr 4 var=$str:+expr var= var= var=expr 5 var=$str=expr str=expr 6 var=expr str 不變 7 var= str 不變 8 var=$str 9 var=$str:=expr str=expr10 var=expr str=expr11 var=expr str 不變12 var=$str13 var=$str?expr expr 輸出至 stderr var= var=str14 var=$str:?expr expr 輸出至 stde

10、rr expr 輸出至 stderr var=str15 16 17 subsirpinguino $ x=a1 b1 c2 d218 subsirpinguino $ echo $x#*119 b1 c2 d220 subsirpinguino $ echo $x#*121 c2 d222 subsirpinguino $ echo $x%1*23 a1 b24 subsirpinguino $ echo $x%1*25 a26 subsirpinguino $ echo $x/1/327 a3 b1 c2 d228 subsirpinguino $ echo $x/1/329 a3 b3

11、c2 d230 subsirpinguino $ echo $x/?1/z331 z3 z3 c2 d2字符串子集提取:$x:3:5的值就是 “e val”,清单 9. shell 参数值的子字符串1 subsirpinguino $ x=some value2 subsirpinguino $ echo $x:3:53 e val字符串长度:您已经知道 $# 表示参数的数量,而 $PARAMETER:OFFSET:LENGTH 扩展适用于单个参数以及 $* 和 $,因此,可以使用一个类似的结构体 $#PARAMETER 来确定单个参数的长度也就不足为奇了。清单 10 中所示的简单的 test

12、length 函数阐明了这一点。自己去尝试使用它吧。清单 10. 参数长度1 subsirpinguino $ testlength () for p in $; do echo $#p;done 2 subsirpinguino $ testlength 1 abc def ghi3 14 35 71.4、运算和运算符1.4.1、整数运算符整数的算术运算符+ * / %赋值运算符 * / 位运算符 & | 位运算赋值运算符 & | 逻辑运算符:& | ! 小于 -lt shift by 2 7 -) shift;break; # end of options 8 -*) echo error

13、: no such option $1. -h for help;exit 1; 9 *) break;10 esac11 done就像平常执行命令一样,当有参数-h 时,则执行相应的动作1.6.3、breake 和continue关键字”break” 用来跳出循环。而关键字”continue”用来不执行余下的部分而直接跳到下一个循环。1.6.4、shiftshift将存放在位置变量中的命令行参数,依次向左传递.例如位置变量当前值为:$1=file1 $2=file2 $3=file3执行一次shift命令后,位置变量的值为:$1=file2 $2=file3还可以在shift命令中指定位置变

14、量转移的次数, 如:shift n例子: 1 while $1 2 do 3 if $1=-i then 4 infile=” $2 5 shift 2 6 else if $1=-o then 7 outfile=”$2 8 shift 2 9 else10 echo “Program $0 does not recognize option $111 fi12 done二、函数脚本 b2d 将二进制数 (比如 1101) 转换为相应的十进制数。这也是一个用expr命令进行数学运算的例子: 1 #!/bin/sh 2 # vim: set sw=4 ts=4 et: 3 help() 4 5

15、 cat b2h - convert binary to decimal 6 USAGE: b2h -h binarynum 7 OPTIONS: -h help text 8 EXAMPLE: b2h 111010 9 will return 5810 HELP11 exit 012 13 14 15 error()16 # print an error and exit17 echo $118 exit 119 20 21 lastchar()22 # return the last character of a string in $rval23 if -z $1 ; then24 #

16、empty string25 rval=26 return27 fi28 # wc puts some space behind the output this is why we need sed:29 numofchar=echo -n $1 wc -c sed s/ /g 30 # now cut out the last char31 rval=echo -n $1 cut -b $numofchar32 33 34 chop()35 # remove the last character in string and return it in $rval36 if -z $1 ; then

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1