【shell】条件

首先shell中只有字符串这一种类型,没有整形或者浮点型。

但是在定义变量时,可以采用单引号,双引号和不加引号。不加引号,如果变量内部有空白字符,则会被截断,所以这种情况必须加引号,单引号和双引号的区别就是变量替换,单引号不会替换。

shell中用作条件测试的语法有两种[]和test。一般用[]更多,如果为了避免太多的[],可以用test。

用[]时要注意,括号前后都必须有空格,否则报错。


在测试块内部,所能用的我们在其他语言里使用的比较符只有四种:== != > <,而且,shell中只有字符串,所以这四种比较符也是针对字符串的,也就是基于字典序的。

除了以上四种比较符外,我们还可以使用其他的比较参数,分为字符串,数字和文件三类:

字符串:

if [-n str],测试非空,str非空返回true。这个很常用,比如我们判断一个环境变量是否存在。

但是需要注意的一点是,这里的str必须上双引号,否则始终为true。

或者,根据《shell脚本攻略》一书的作者的建议,凡是对字符串的if,全部放在双中括号中[[]],即if [[-n str]],也只是可行的。


数字:

主要有以下六种:

-eq

-nq

-lt

-le

-gt

-ge


文件:

-f 是文件或者目录

-d 是目录

-e 是文件


如果有多个条件,可以使用|| &&连接每一个[]。但是不能出现在[]内部,内部也只能只用命令-a或者-o。

if [ $a -gt 10 ] && [ $a -lt 12 ];then
	echo "valid"
fi

if [ $a -gt 10 -a $a -lt 12 ];then
	echo "valid"
fi



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值