算数运算符
算数运算符 + - * / % = == !=,可使用expr 表达式进行求值操作
#!/bin/bashval=`expr 2 + 2`echo "两数之和:$val"a=10b=20val=`expr $a + $b`echo "两数相加:$val"val=`expr $a - $b`echo "两数相减:$val"val=`expr $b / $a`echo "两数相除:$val"# 乘号(*)前边必须加反斜杠(\)转义才能实现乘法运算val=`expr $b \* $a`echo "两数相乘:$val"val=`expr $a % $b`echo "a与b取余 :$val"# 条件表达式要放在方括号之间,并且要有空格if [ $a == $b ]thenecho "a == b"fiif [ $a != $b ]thenecho "a != b"fi:<<!两数之和:4两数相加:30两数相减:-10两数相除:2两数相乘:200a与b取余 :10a != b!
关系运算符
-eq:等于
-ne:不等于
-gt:大于
-lt:小于
-ge:大于等于
-le:小于等于
a=10b=20if [ $a -eq $b ]thenecho "$a -eq $b a == b"elseecho "$a -eq $b a != b"fiif [ $a -ne $b ]thenecho "$a -ne $b a != b"elseecho "$a -ne $b a == b"fiif [ $a -gt $b ]thenecho "$a -gt $b a > b"elseecho "$a -gt $b a < b"fi:<<!10 -eq 20 a != b10 -ne 20 a != b10 -gt 20 a < b!
布尔运算符
!: 非运算
-o: 或运算
-a: 与运算
a=11b=12if [ $a -gt 1 -o $b -gt $a ]thenecho "b == $b"elseecho "a == $a"fi:<<!b == 12!
逻辑运算符
&& 逻辑and
|| 逻辑or
a=12b=13if [[ $a -lt 100 && $b -gt 100 ]]thenecho "返回 true"elseecho "返回 false"fiif [[ $a -lt 100 || $b -gt 100 ]]thenecho "返回 true"elseecho "返回 false"fi:>>!返回 false返回 true!
字符串运算符
=: 检测两个字符串是否相等
!=: 检测两个字符串是否不相等
-z: 检测字符串长度是否为0
-n: 检测字符串长度是否不为0
$: 检测字符串是否为空
if [ "aaa" = "bbb" ]thenecho "aaa == bbb "elseecho "aaa != bbb"fiif [ "aaa" != "bbb" ]thenecho "aaa != bbb"elseecho "aaa == bbb"fia="aaaa"if [ -z $a ]thenecho "-z $a : 字符串长度为 0"elseecho "-z $a : 字符串长度不为 0"fiif [ -n $a ]thenecho "-n $a: 字符串长度不为0"elseecho "-n $a: 字符串长度为0"fiif [ $ ]thenecho " $ '' : 检测字符串为空"elseecho "$ 检测字符串不为空"fi
文件测试运算符
-d: 检测文件是否是目录
-f:检测文件是否是普通文件
-r: 检测文件是否可读
-w: 检测文件是否可写
-x: 检测文件是否可执行
-s: 检测文件是否为空
-e: 检测文件是否包含目录
#!/bin/bashfilename="$0"# filename="/var/www/runoob/test.sh"echo "打印文件名:$filename"if [ -d $filename ]thenecho "这是目录"elseecho "这不是目录"fiif [ -f $filename ]thenecho "this is ordinary file"elseecho "this is not ordinary file"fiif [ -r $filename ]thenecho "file is readable"elseecho "file is unreadable"fiif [ -w $filename ]thenecho "file is writable"elseecho "file is not writable"fiif [ -x $filename ]thenecho "file is executable"elsesudo chmod +x $filenamels -l $filenamefiif [ -s "$filename" ]thenecho "file is not empty"elseecho "file is empty"fiif [ -e "$filename" ]thenecho "There are directories for files"elseecho "There are no directories for files"fi
