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