bash中的比较

比较小数:

hostname | awk 'NR==1{print(3>=5.97)?"yes":"no"}'

其它:

if [ true ];
then
        echo true;
fi

x=1
if [ $x -eq 22 ];
then
        echo false;
elif [ $x -eq 1 ];
then
        echo true;
else
        echo AAA;
fi

x=1;
y=2;
if [ $x -eq 1 ] && [ $y -eq 2 ];
then
        echo AAA;
fi

或者有种缩写的方法:

x=1;
[ $x -eq 1 ] && echo AAA; #条件为真,就执行
[ $x -eq 2 ] || echo AAA;	#条件为假,就执行

比较符号(都用于整型数字的比较):
-ne:不等
-eq:相等
-gt:大于
-lt:小于
-ge:大于等于
-le:小雨等于

-a和-o代表and和or:

x=1;
[ $x -eq 1 -a $x -eq 1 ] && echo AAA;
[ $x -eq 2 -o $x -eq 4 ] || echo BBB;

文件系统相关:
[ -f $file]:file变量是否是一个正常的文件路径或文件名
[ -x $file]:文件是否可执行
[ -d $file]:是否是目录
-e:是否存在该文件(*)
-w:文件是否可写
-r:文件是否可读
-L:是否是一个符号连接

字符串比较(最好用双中括号):

x=a111;
y=a111;
if [[ $x = $y ]];
then
        echo AAA;
fi

其中=可以换成:
!=
>
<
-z 如果str是空的,则为真([[ -z $str ]])
-n 如果str包含非空字符串,则为真([[ -n $str ]])

test:
可以取代[]:

x=111;
y=111;
if test $x -eq $y ;
then
        echo AAA;
fi

使用括号改变优先级:

x=a111;
y=a111;

if [ \( $x = $y \) -a \( $y = $x \) ] ;
then
        echo AAA;
fi

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*