AIX shell基础 | ||
1、脚本如何接受参数-$序号代表相应的参数。 如kk me t ,其中kk未脚本名字,me ,t都是传递给脚本的参数,在脚本里面用$1代表me,$2就代表t。非常简单。留意一下$(10),$(11),即是10之后就需要用()括起来。 $ sh_program arg1 arg2 . . . argx//$0 $1 $2 .... $X echo The value of command line argument \#1 is: $1 2、chmod +x的脚本直接键入脚本名字即可运行,它会产生一个新的shell进程来运行之。 3、shell使用“#”作为它的注释符。 4、# 命令行参数的数量 * 完全的参数字符串 就是$#, $*,举例kk me t,那么$#=2,$*='me t'其实不包含第0个参数,脚本名字就是第0参数。而$#,$*都不包括$0这个参数的。 5、shift [n]左移参数命令。n=1(默认)。就是把参数左移n位。看例子: $kk me t //原始参数2个。 shift 1 //参数左移动 $kk t //最后参数变成1个。 参数列表堆栈中丢弃部分参数。 6、read [var1]...[varX] 从标准输入读取参数。类似于C的getchar功能。 7、脚本其他执行方法 sh shell_program argumetns shell_program 的属性可以不是可执行的。 shell_program 必须是可读的。 sh –x shell_program arguments每一行在被执行前被打印出来。 8、可以在你的shell程序的第一行前加入! /usr/bin/ shell_name来指定命令行解释器。 第二、分支 1、任何命令执行完成之后系统会返回一个值,而这个值用$?来检索。0为真,非0为假,其中1一般代表语法错误。 2、退出shell,返回值:exit [arg] 比如exit 2,然后使用$?检索这个值。就可以看到是2这个值。 3、功能强大的test命令。可以比较整数、字符串、文件。 有2种形式 test expression 或者 [expression]。注意:在"["和"]"符号的周围必须要有空格。 另外它的结果并不能直接看到,需要通过$?变量来检索。 a、比较整数 [ number relation number ] 通过关系运算符来对数字进行比较关系运算符: -lt 小于 -le 小于或者等于 -gt 大于 -ge 大于或者等于 -eq 等于 -ne 不等于 注意:作为一个通用的规则,你应该在所有的$变量加上双引号来避免shell发生不正确的变量的替代。例如[ "$XX" -eq 3]中,如果XX为空而没有”“的就变成了[ -eq 3]这样会导致test命令语法错误。加上双引号之后就是["" -eq 3],这样保证test命令成功运行而得到正确的结果。 b、比较字符串 [ string1 = string2] 判断字符串是否相等 [ string1 !=string2] 判断字符串是否不等 -z string 如果string的长度为0就为真 -n string 如果string的长度为非零就为真 string 如果string的长度为非零就为真 c、比较文件 -r file 如果文件存在并且是可读的时候为真 -w file 如果文件存在并且是可写的时候为真 -x file 如果文件存在并且是可执行的时候为真 -d directory 目录存在并且是个目录的时候为真 -f file 如果文件存在并且其字节数大于0,会返回真(0) 另外:test命令其他操作符语法: -o OR -a AND \( \) GROUPING 看看例子: $ [ "$ANS" = y -o "$ANS" = Y ] $ [ "$NUM" -gt 10 -a "$NUM" -lt 20 ] $ test -s file -a -r file -a -x file 4、if 语句,比较熟悉了,了解一下用法就可以了 a、形式1,简单流程控制 if ...fi if [ $# -ne 3 ] then echo Incorrect syntax echo Usage: cmd arg1 arg2 arg3 exit 99 fi b、形式2,if ... then ...else ...fi 看例子 if [ "$X" -lt 10 ] then echo X is less than 10 else echo X is not less than 10 fi 留意一下就是if语句跟其他语言一样,是可以嵌套的。 5、多路分支结构case case word in patterm1) list A ;; pattern2) list B ;; patternN) list N ;; esac 判断词为word,可能值为patternN),而word判断是基于严格的"字符串"判断 ,另外很是搞笑的是每个分支shell使用两个分号作为结束符。对于patternN),可以使用几种适配符的,就是*,?,[...],|号,分别是任何字符,单一字符,括号中出现的字符,,or语句。 第三、循环 1、算术let expression or (( expression )) $x=3 $y=5 $let x=x+2 $echo $x 5 $let "x=x/(Y+1)" $echo $x 0.6(可能只能显示0) $((y=y+3)) $echo $y 8 ----------------------- 操作符 描述 - 减去 ! 逻辑相反 * / % 乘,除,余数 + - 加,减 = 关系比较 == != 等于不等于 = 赋值 shell 可以接受上面这些参数。 注意双引号被用来忽略括号的特殊含义。同样如果你希望使用空格来分隔操作符和操作符的时候,就必须使用双引号,或者(( ))语句:let " x = x + (y / 2)" 或者(( x= x+ (y / 2) )), 其实从上面这个语句中可以看出,脚本语言一般来说对语法要求比较宽松,这样也直接决定了它需很多相应规则来协助它完成一些判断。松散语言一般功能肯定受限,比较vb跟c就清楚了,当然脚本不是严格意义上的语言。 2、while语句 $ cat test_while X=1 while (( X 3、unit语句 $ cat test_while X=1 unit (( X > 10 )) shell最简单脚本do echo hello X is $X let X=X+1done done | ||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论