一、基础运算
- 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
- expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
#计算两个数之间的和 val=`expr 2 + 2` echo "两数之和为 : $val" #输出:两数之和为 : 4
#计算两个数之间的乘积
val=`expr 2 * 2`
echo "两数之乘积为 : $val" #输出:两数之乘积为 : 4
注意的地方:
- 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
- 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
- 乘号(*)前边必须加反斜杠()才能实现乘法运算;
条件表达式
条件表达式需要在首尾加上“ [ ] ”,并且要用空格间隔开。
#定义变量 a=10 b=20 #判断 a == b if [ $a == $b ] then echo "a 等于 b" fi #判断 a != b if [ $a != $b ] then echo "a 不等于 b" fi
二、关系运算
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
a=10 b=20
#判断两数是否相等 if [ $a -eq $b ] then echo "$a -eq $b : a 等于 b" else echo "$a -eq $b: a 不等于 b" fi
PS: 用test命令也可以实现相应的比较,详见:戳这里~
三、布尔运算
#判断两数大小 if [ $a -lt 100 -a $b -gt 15 ] then echo "$a 小于 100 且 $b 大于 15 : 返回 true" else echo "$a 小于 100 且 $b 大于 15 : 返回 false" fi
四、逻辑运算
a=10 b=20
#判断条件是否为真。外层的括号是判断条件的,内层的括号是获取两条件的与运算结果 if [[ $a -lt 100 && $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi
五、字符串运算
a="abc" b="efg" #判断字符串长度是否为0 if [ -z $a ] then echo "-z $a : 字符串长度为 0" else echo "-z $a : 字符串长度不为 0" fi
六、文件测试运算
#定义一个变量,值为文件路径 file="/home/zh/zh/test/testShell.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