1. 条件判断

条件测试的表达式:

[ expression ]  #注意expression的两边一定要有一个空格,否则会报语法错误。

` expression ` #注意expression的两边一定要有一个空格,否则会报告语法错误。

test expression

命令的间逻辑关系:

逻辑与: && 或者-a

第一个条件为假时,第二条件不用再判断,最终结果已经有;

第一个条件为真时,第二条件必须得判断;

逻辑或: || 或者-o

例如:

如果用户user6不存在,就添加用户user6

! id user6 && useradd user6

id user6 || useradd user6


控制语句的结构

单分支if语句

if 判断条件; then

  statement1

  statement2

  ...

fi


双分支的if语句:

if 判断条件; then

statement1

statement2

...

else

statement3

statement4

...

fi


多分支的if语句:

if 判断条件1; then

  statement1

  ...

elif 判断条件2; then

  statement2

  ...

elif 判断条件3; then

  statement3

  ...

else

  statement4

  ...

fi


条件判断的类型分为三种

整数测试

       -eq: 测试两个整数是否相等;比如 $A -eq $B

-ne: 测试两个整数是否不等;不等,为真;相等,为假;

-gt: 测试一个数是否大于另一个数;大于,为真;否则,为假;

-lt: 测试一个数是否小于另一个数;小于,为真;否则,为假;

-ge: 大于或等于

-le:小于或等于    

一个例子:

INT1=63

INT2=77

[ $INT1 -eq $INI2 ]

[[ $INT1 -eq $INT2 ]]

test $INT1 -eq $INT2  

文件测试:

-e FILE:测试文件是否存在

-f FILE: 测试文件是否为普通文件

-d FILE: 测试指定路径是否为目录

-r FILE: 测试当前用户对指定文件是否有读取权限;

-w  ...写权限

-x  ...执行权限

一个例子

[ -e /etc/inittab ]

[ -x /etc/rc.d/rc.sysinit ]


字符测试

字符测试:

==:测试是否相等,相等为真,不等为假

注意:等号的两边必须有空格!!!!否则会报语法错误

!=: 测试是否不等,不等为真,等为假

>

<

-n string: 测试指定字符串是否为空,空则真,不空则假

-z string: 测试指定字符串是否不空,不空为真,空则为假