- 算术运算需要借助
expr
echo `expr $a + $b`
其中+两遍需要有空格,且exp语句需要用反引号隔开,乘法需要反斜杠
echo `expr $a \* $b`
- 关系运算符
运算符 | 含义 |
---|---|
eq | equal |
ne | no equal |
gt | 大于 |
lt | 小于 |
ge | 大于等于 |
le | 小于等于 |
for example:
a=10
b=20
if [ $a -lt $b ];then
echo "a 大于 b"
fi
- 布尔运算符
运算符 | 含义 |
---|---|
! | 非 |
o | 或 |
a | 与 |
for example:
a=10
b=20
if [ ! $a == $b ];then
echo "a和b不相等"
fi
if [ $a ==10 -a $b == 20 ];then
echo "a 等于10 且 b 等于 20"
fi
或者
if [ $a -eq 10 -a $b -eq 20 ];then
echo "a 等于10 且 b 等于 20"
fi
- 逻辑运算符
运算符 | 含义 |
---|---|
&& | 逻辑与 |
|| | 逻辑或 |
for example:
a=10
b=20
if [[ $a -gt 5 && $b -lt 30]];then
echo "a 大于 5 且 b 小于 30"
fi
用法跟关系运算符中的-a
和-o
差不多
- 字符串运算符
运算符 | 含义 |
---|---|
= | 检查字符串是否相等 |
!= | 是否不相等 |
-z | 检测字符串长度是否为0 |
-n | 检测字符串长度是否不为0 |
str | 检测字符串长度是否为空 |
for example
a="abc"
b="def"
if [ $a != $b ];then
echo "a 和 b 不相等"
fi
if [ -n $a ];then
echo "a的值不为0"
fi
- 文件测试运算符
运算符 | 含义 |
---|---|
-b | 块设备文件 |
-c | 字符设备文件 |
-d | 目录 |
-f | 普通文件 |
-g | SGID位 |
-k | 设置了粘着位 |
-p | 名管道 |
-u | SUID位 |
-r | 可读 |
-w | 可写 |
-x | 可执行 |
-s | 空 |
-e | 是否存在 |
file="/home/gyh/learn_sh/test2.sh"
if [ -r $file ];then
echo "文件可读"
else
echo "文件不可读"
fi
if [ -w $file ];then
echo "文件可写"
else
echo "文件不可写"
fi
if [ -x $file ];then
echo "文件可执行"
else
echo "文件不可执行"
fi
if [ -f $file ];then
echo "文件为普通文件"
else
echo "文件不为普通文件"
fi
if [ -s $file ];then
echo "文件不为空"
else
echo "文件为空"
fi
if [ -e $file ];then
echo "文件存在"
else
echo "文件不存在"
fi