shell基本运算符

一、算术运算符

 使用expr或者$(()),+ - × / %

a=10
b=20

val1=`expr $a + $b`  #变量之间要加空格  对于乘法*,需添加转义符"\"。
val2=$((a + b))  #变量之间无需添加空格

 

二、关系运算符

只支持数字,不支持字符串,除非字符串的值为数字。

-eq 相等

-ne 不相等

-gt 大于

-lt 小于

-ge 大于等于

-le 小于等于

a=10
b=20

if [ $a -eq $b ]  #[]与变量之间都要有空格
then
    echo "a equal b"
else
    echo "a not equal b"
fi

 

三、布尔运算符

! 非

-o 或

-a 与

a=10
b=20

if [ $a -lt 100 -a $b -gt 15 ]
then
    echo "a小于100且b大于15为真"
fi

 

四、逻辑运算符

&& 与

|| 或

a=10
b=20

if [[ $a -lt 100 && $b -gt 15 ]] #需要两个[],注意与上面的-a对比。
then
    echo "a小于100且b大于15为真"
fi

 

五、字符串运算符

= 字符串是否相等

!= 字符串是否相等

-z 字符串长度是否为0

-n 字符串长度是否为0

str 字符串是否为空

 

a="abc"
b="efg"

if [ $a = $b ]
then
    echo "equal"
else
    echo "not equal"
fi

if [ -z $a ]
then
    echo "0"
else
    echo "not 0"
fi

if [ -n $a ]
then
    echo "not 0"
else
    echo "0"
fi

if [ $a ]
then
    echo "not null"
else
    echo "null"
fi

 

六、文件测试运算符

-b file 是否是块设备文件

-c file 是否是字符设备文件

-d file 是否是目录

-f file 是否是普通文件(不是目录,也不是设备)

-g file 是否设置了SGID位

-k file 是否设置了粘着位

-p file 是否是有名管道

-u file 是否设置了SUID位

-r file 文件是否可读

-w file 文件是否可写

-x file 文件是否可执行

-s file 文件是否为空

-e file 文件(包括目录)是否存在

-L file 文件是否是符号链接文件

-h file 文件是否是软链接文件

file="test.txt"

if [ -f $file ]
then
    echo "file exist!"
fi

 

posted @ 2018-12-27 18:39  c++11  阅读(338)  评论(0编辑  收藏  举报