Bash编程3——条件语句(一)

Bash编程003——条件语句1

Shell提供了一系列的条件测试来处理程序执行过程中的各种情况,并做进一步的操作。

条件测试

Shell提供了一组测试运算符,通过这些运算符,Shell程序能够判断条件是否成立。条件测试在各种流程控制语句,如判断语句和循环语句中发挥着重要的作用。

在shell中提供了两个内置命令"["和test用于计算条件表达式的值,"["和test其实是同义词,区别在于使用"["时必须最后用"]"匹配。

简单的示例:

var=10086
# 注意这里[ ]两侧必须有空格
if [ $var -eq 10086 ]
then
    echo var is 10086
else
    echo var is not 10086
fi

var=10010
if test $var -eq 10010 
then
    echo var is 10010
else
    echo var is not 10010
fi

注意:

值得一提的是,在Shell程序中,条件测试的指定条件为真时,返回值为0,否则返回非零值。这个设计刚好和C语言中的判断相反,这主要是为了和Shell程序的退出状态一致。当Shell程序执行成功后,返回0;发生错误,则返回非零值。

我们来验证一下,在Shell中$?是一个特殊的系统变量,表示上一条语句执行的返回值。

var=1
test $var -eq 1; echo $?
test $var -eq 2; echo $?

执行结果如下所示:

5656674-aab51c719a337207.png
2018-12-24_195321.png

test命令的使用

文件操作符:

test -a FILE 测试文件是否存在

test -b FILE 测试文件是否是块特殊文件

test -c FILE 测试文件是否是字符特殊文件

test -d FILE 测试文件是否是目录

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

test -f FILE 测试文件是否存在并且是普通文件

test -g FILE 测试文件是否设置了组ID

test -h FILE 测试文件是否是符号链接

test -L FILE 测试文件是否是符号链接

test -k FILE 测试文件是否设置了sticky位

test -p FILE 测试文件是否是命名管道

test -r FILE 测试文件是否是对当前用户可读

test -s FILE 测试文件是否存在且非空

test -S FILE 测试文件是否是socket

test -t FD 测试FD是否在终端中打开了

test -u FILE 测试文件是否设置了用户ID

test -w FILE 测试文件是否对当前用户可写

test -x FILE 测试文件是否对当前用户可执行

test -O FILE 测试文件是否是实际由你拥有

test -G FILE 测试文件是否是实际上由你所在的组拥有

test -N FILE 测试文件是否在最后字词读取后被修改了

test FILE1 -nt FILE2 根据最后修改时间判断FILE1是否比FILE2更新

字符串操作符:

test -z STRING 字符串是否非空

test -n STRING

test STRING1 = STRING2 字符串是否相等

test STRING1 != STRING2 字符创是否不等

test STRING1 < STRING2 按照字母表顺序,STRING1是否小于STRING2

test STRING1 > STRING2 按照字母表顺序,STRING1是否大于STRING2

整数操作符:

test number1 -eq number2 是否相等

test number1 -ne number2 是否不等

test number1 -gt number2 number1是否大于number2

test number1 -lt number2 number是否小于number2

test number1 -ge number2 number1是否大于等于number2

test number1 -le number2 number是否小于等于number2

逻辑操作符:

test ! EXPR 对表达式取反

test EXPR1 -a EXPR2 相当于and,两个表达式都为真则为真

test EXPR1 -a EXPR2 相当于or,有一个表达式为真即为真

别的操作符:

test -o OPTION shell选项OPTION是否允许

test -v VAR 是否设置了shell变量VAR

test -R VAR 是否设置了shell变量VAR,且VAR是一个名字引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值