Shell条件判断

在shell命令行及一些脚本中经常会使用到条件判断,在网上搜了一把,这里对常用的一些条件判断做一个罗列总结,以免以后遗忘了。

-b file            若文件存在且是一个块特殊文件,则为真

-c file            若文件存在且是一个字符特殊文件,则为真

-d file            若文件存在且是一个目录,则为真

-e file            若文件存在,则为真

-f file            若文件存在且是一个规则文件,则为真

-g file            若文件存在且设置了SGID位的值,则为真

-h file            若文件存在且为一个符合链接,则为真

-k file            若文件存在且设置了"sticky"位的值

-p file            若文件存在且为一已命名管道,则为真

-r file            若文件存在且可读,则为真

-s file            若文件存在且其大小大于零,则为真

-u file            若文件存在且设置了SUID位,则为真

-w file            若文件存在且可写,则为真

-x file            若文件存在且可执行,则为真

-o file            若文件存在且被有效用户ID所拥有,则为真

-z string          若string长度为0,则为真

-n string          若string长度不为0,则为真

string1 = string2  若两个字符串相等,则为真

string1 != string2 若两个字符串不相等,则为真

int1 -eq int2      若int1等于int2,则为真

int1 -ne int2      若int1不等于int2,则为真

int1 -lt int2      若int1小于int2,则为真

int1 -le int2      若int1小于等于int2,则为真

int1 -gt int2      若int1大于int2,则为真

int1 -ge int2      若int1大于等于int2,则为真

!expr              若expr为假则复合表达式为真。expr可以是任何有效的测试表达式

expr1 -a expr2     若expr1和expr2都为真则整式为真

expr1 -o expr2     若expr1和expr2有一个为真则整式为真


条件表达式的写法有多种:test expression, [ expression ],[[ expression ]],((expression)),其中部分有些需要注意的地方。

1)test:既可以用=也可以用==,test”=”前后不能有空格;

2)[ expression ]与[[ expression ]]的区别是[[ expression ]]中可以使用通配符,比如:

$ [ $name = [Oo]ak ]

$ echo $?

1

其中没有扩展为通配O或o,所以不相等


$ [[ $name = [Oo]ak ]]

$ echo $?

0

将[Oo]扩展为只匹配其中的一个

3)((expression))只要注意是双括号就可以了

4)[ expression ]与[[ expression ]]在表达式与中括号间要有空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值