您的位置:首页 > 运维架构 > Shell

Bash脚本条件测试的几种方式

2014-06-30 17:18 393 查看
Bash脚本条件测试的几种方式:
1)cmd #执行命令成功与否,根据命令的退出状态来判断,$?变量值的含义0成功,1-255失败,可以使用exit #命令退出脚本,并指定脚本退出状态为#,若为在脚本中使用exit,则脚本的退出状态为脚本中最后一条执行完成的命令的退出状态。
2)[expression]
3)`expression`
4)test expression

If语句语法格式
1) 单分支
If condition;thenCmd1Cmd2Fi2)双分支
If condition;thenCmd1elseCmd2Fi3)多分支
If condition;thenCmd1ElifCmd2ElseCmd3Fi 整数测试表达式:数值1 比较符号 数值2
比较符号: -gt大于-ge大于等于-eq等于
-ne不等于-lt小于-le小于等于

字符测试表达式:字符1 比较符号 字符2
比较符号: > 大于 < 小于 == 等于 != 不等于
单目操作符:-z $string:为空则为真,不空则为假
–n $string:为空则为假,不空则为真模式匹配表达式:=~ 一般用于双中括号中,pattern模式可以采用正则表达式。=~操作符两侧需要加上空格
格式[[ $string =~ pattern ]]

文件测试表达式:操作符 文件/目录
操作符:
-f 是否为普通文件
-d 是否为目录文件
-e 是否为已存在文件
-r 是否为可读文件
-w 是否为可写文件
-x 是否为可执行文件
-s 是否不为空,不空为真
-l 是否为符号链接

Bash位置参数
$1,$2…..${10}…
$@:所有位置参数每个位置参数当成一个独立的参数
$*::所有位置参数当成一个独立的参数。
$#:位置参数的个数
Shift命令:shift
左移位置参数列表,n为左移的位置变量的个数。

小技巧:
*脚本中命令的无关输出应该让它重定向到/dev/null cmd &> /dev/null
*把你想要的脚本退出状态保存在一个变量中,然后最后脚本用exit命令以此变量值退出脚本。

Bash中的组合条件测试,完成条件之间的逻辑关系(逻辑{与、或、非})
*这些操作都是短路的,第一段表达式算好,有了结果的话,第二段表达式就不运算了。
*&&的运算优先级要高于||;例:id user1&& echo “user1 exist” ||useradd user1

逻辑与
&& | -a
逻辑或
|| | -o
逻辑非
!:为单目操作符,可用于测试bash命令的退出状态,以及可用于[][[]]测试结构中
注:&&和||可以用在命令行上完成命令间的逻辑关系,而-a -o只能用于[][[]]中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息