1.条件测试
在shell中,测试条件表达式中只能通过使用test命令来完成。test命令的语法如下:
test 条件表达式
test有四类比较符:字符串比较、数字比较、文件操作符和逻辑操作符。
1)字符串比较
下面的操作符可以用来比较两个字符串表达式:
s1=s2:如果s1等于s2,则测试条件为真;
s1!=s2:如果s1不等于s2,则测试条件为真;
-n s1:如果字符串s1长度大于0,则测试条件为真;
-z s1:如果字符串s1长度等于0,则测试条件为真;
2)数字比较
下面的操作符可以用来比较两个数:
n1 –eq n2:如果n1等于n2,则测试条件为真;
n1 –ne n2:如果n1不等于n2,则测试条件为真;
n1 –gt n2:如果n1大于n2,则测试条件为真;
n1 –ge n2:如果n1大于或等于n2,则测试条件为真;
n1 –lt n2:如果n1小于n2,则测试条件为真;
n1 –le n2:如果n1小于或者等于n2,则测试条件为真。
3)文件操作符
下面的操作符可以用作文件比较操作符:
-r 文件名:如果文件存在且是用户可读的,则测试条件为真;
-w 文件名:如果文件存在且是用户可写的,则测试条件为真;
-x 文件名:如果文件存在且是用户可执行的,则测试条件为真;
-d 文件名:如果文件存在且是目录文件,则测试条件为真;
-f 文件名:如果文件存在且是普通文件,则测试条件为真;
-b 文件名:如果文件存在且是块文件,则测试条件为真;
-c 文件名:如果文件存在且是字符文件,则测试条件为真;
-s 文件名:如果文件存在且长度大于0,则测试条件为真。
4)逻辑操作符
逻辑操作符用于根据逻辑规则比较表达式。下面这些字符表示NOT(非)、AND(与)和OR(或):
! 逻辑表达式:对一个逻辑表达式求反;
–a 逻辑表达式:如果两个逻辑表达式同时为真,则返回真;否则为假;
–o 逻辑表达式:如果两个逻辑表达式同时为假,则返回假;否则为真。
5)特殊条件测试
除以上条件测试外,在if语句和循环语句中还常用下列3个特殊条件测试语句:
:——表示不做任何事情,其退出值为0;
true——表示总为真,其退出值总为0;
false——表示总为假,其退出值为255。
2.条件语句(www.xing528.com)
1)if语句
if语句通过判定条件表达式来做出选择。if语句格式如下:
格式1:
格式2:
执行过程:
格式1的执行过程是:先进行“条件测试”,如果测试结果为真,则执行then之后的“命令”;否则,执行else之后的“命令2”。
格式2的执行过程是:先进行“条件1测试”,如果测试结果为真,则执行命令1;否则,进行“条件2测试”,如果测试结果为真,则执行命令2;……;如果条件测试都为假,则执行命令n。
if语句的一般格式是:
例3.6 if语句应用,文件名为ex3.6。
运行这个脚本:
[wuxy@localhost pro]$bash ex3.6 yes
value is yes
2)case语句
case语句用来执行依赖于离散值或者与指定变量相匹配的一定范围的数据的语句。
cash语句的格式如下:
其执行过程是,用“字符串”的值依次与各模式字符串进行比较,如果发现与某一个匹配,那么就执行该模式字符串之后的各个命令,直至遇到两个分号为止。如果没有任何模式字符串与该字符串的值相符合,则执行*后面的命令。
例3.7 以月份数字作为参数,编写一个回显月份名的脚本,脚本文件名为:ex3.7。
这个脚本如下所示:
#!/bin/bash
case $1 in
1) echo “month is January”;;
2) echo “month is February”;;
3) echo “month is March”;;
4) echo “month is April”;;
5) echo “month is May”;;
6) echo “month is June”;;
7) echo “month is July”;;
8) echo “month is August”;;
9) echo “month is September”;;
10) echo “month is October”;;
11) echo “month is November”;;
12) echo “month is December”;;
*) echo “Invalid parameter.”;;
esac
#end
运行脚本:
[wuxy@localhost pro]$bash ex3.7 2
month is February
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。