12-深入参数.ppt_第1页
12-深入参数.ppt_第2页
12-深入参数.ppt_第3页
12-深入参数.ppt_第4页
12-深入参数.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、深入参数,曾树洪,$parameter,示例1: $ mv $file $filex 示例2: $ echo $11,$parameter:-value,如果parameter不为空,就替换它的值,否则就替换为value。 示例 $ echo Using editor $EDITOR:-/bin/vi 等价于:if -n “$EDITOR” then echo Using editor $EDITOR else echo Using editor /bin/vi fi,$parameter:-value,$ EDITOR=/bin/ed $ echo $EDITOR:-/bin/vi /bin

2、/ed $ EDITOR= $ echo $EDITOR:-/bin/vi /bin/vi,$parameter:=value,与$parameter:-value基本相同,区别是,当parameter为空时,不但使用value,而且把它赋给parameter。 不能用这种方法给位置参数赋值。(也就是parameter不能为数字)。 不能单独作为命令使用 比如: $ ZSH= $ $ZSH:=/bin/vi sh:/bin/vi: cannot execute,$parameter:=value,可以用空命令: $ ZSH = $ : $ZSH:=/bin/vi $ echo $ ZSH /b

3、in/vi $ : $ZSH:=/bin/di $ echo $ ZSH /bin/vi,$parameter:?value,如果parameter不为空,shell替换它的值。 否则shell就把value写入标注错误,然后退出 如果value为空,shell就写入信息: prog: parameter null or not set 通常用于检查某变量是否已经设置了。,$parameter:?value实例,$ ZSH= $ : $ZSH:? “NO ZSH file !” NO ZSH file ! $ : $ZSH:? sh : ZSH : parameter null or not

4、set,$ parameter:+value,如果parameter不为空,则该结构替换为value,否则什么也不替换。 $ traceopt=T $ echo option : $(traceopt:+“trace mode” option: trace mode $ traceopt= $ echo option : $(traceopt:+“trace mode” option:,vaule,前面几种参数替换中,vaule部分也可以是命令替换,只有需要使用时shell才执行它。 如:WORKDIR=$DBDIR:-$(pwd),模式匹配结构,两个参数:变量名(或参数号)、模式 替换后的变

5、量值不变 模式匹配结构里可以使用文件名替换所接受的模式匹配字符和条件相关的值:*匹配0或任意个字符,?匹配一个任意字符,匹配给定字符组中的一个字符,!匹配不在在给定字符组中的任一字符。,$parameter %pattern,把pattern从parameter右边删除,替换所得到的结果,删除时采用最小匹配。,$parameter %pattern,把pattern从parameter右边删除,替换所得到的结果,删除时采用最大匹配。,$parameter #pattern,把pattern从parameter左边删除,替换所得到的结果,删除时采用最小匹配。,$parameter #patter

6、n,把pattern从parameter左边删除,替换所得到的结果,删除时采用最大匹配。,$#parameter,替换为parameter的长度。如果parameter是*或者结果不定。 text =“the shell” echo $ #text 9,$ var =testcase $ echo $var testcase $ echo $var%e ? $ echo $var ? $ echo $var%s*e ? $ echo $var%s*e ? $ echo $var#?e ? $ echo $var#*s ? $ echo $var#*s ? $ echo $var#teas ?,

7、实例,if $file%.o != $file then # file ends in .o . fi,实例2,$ cat mybasename echo $1#*/ $ mybasename /usr/spool/zsh zsh,Shell教本的追踪与调试,n 不执行脚步,仅查询语法问题 v 在执行脚步前,先将脚本的内容输出到终端 x 将使用的脚步内容显示到终端上,前面放上一个加号。,$ Cat ctype if $# -ne 1 then echo 用法:ctype 字符 exit 1 fi Char =“$1” numchar =$(echo “$char” | wc c ) If “$

8、numchars” ne 1 Then echo 请键入单字符 Exit 1 Case “$cahr” in 0-9 ) echo 数字; a-z ) echo 小写字母; A-Z ) echo 大写字母; *) echo 特殊字符; esac,$ sh x ctype a + 1 ne 1 +char =a +echo a +wc c +numchar= 2 +echo 请键入单字符 请键入单字符 +exit 1,set,作用1:设置各种shell选项 作用2: 给位置参数$1,$2等重新赋值。,set -x,-x打开shell的跟踪模式 $ x=* $ set x $ cmd=wc +cm

9、d =wc $ ls | $cmd l +ls +wc l 5 (跟实际情况有关) $,$ set +x (关闭跟踪模式) + set +x $ ls |wc l 5,不带参数的set命令,按字母顺序给出环境中的所有变量,包括环境变量和局部变量。,用set命令重新设置位置参数,位置参数只能通过set 和 shift命令来改变 $ set a b c 把a赋值给$1,把b赋值给$2,c赋值给$3,实例,$ cat words # count words on a line read line set $line echo $#,$ ./words Heres a line for you to count 7 $ ./words -1 + 5 = 4 ? $ ./words (只按enter键) ?,-选项,$ ./ words -1 + 5 = 4 Words:-1:bad

温馨提示

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

评论

0/150

提交评论