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

1cmd    #执行命令成功与否,根据命令的退出状态来判断,$?变量值的含义0成功,1-255失败,可以使用exit  #命令退出脚本,并指定脚本退出状态为#,若为在脚本中使用exit,则脚本的退出状态为脚本中最后一条执行完成的命令的退出状态。

2[expression]

3`expression`

4)test expression

 

 

If语句语法格式

1)  单分支

If  condition;then

Cmd1

Cmd2

Fi

2)双分支

If  condition;then

Cmd1

else

Cmd2

Fi

3)多分支

If  condition;then

Cmd1

Elif

Cmd2

Else

Cmd3

Fi

 

整数测试表达式:数值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]左移位置参数列表,n为左移的位置变量的个数。

 

小技巧:

*脚本中命令的无关输出应该让它重定向到/dev/null   cmd &> /dev/null

*把你想要的脚本退出状态保存在一个变量中,然后最后脚本用exit命令以此变量值退出脚本。

 

Bash中的组合条件测试,完成条件之间的逻辑关系(逻辑{与、或、非}

*这些操作都是短路的,第一段表达式算好,有了结果的话,第二段表达式就不运算了。

*&&的运算优先级要高于||;例:id user1&& echo “user1 exist” ||useradd user1

 

逻辑与

&& | -a

逻辑或

|| |  -o

逻辑非

!:为单目操作符,可用于测试bash命令的退出状态,以及可用于[][[]]测试结构中

注:&&||可以用在命令行上完成命令间的逻辑关系,而-a  -o只能用于[][[]]