#!/bin/bashval=`expr 4 + 2` #使用的是反引号 ` 而不是单引号 'echo "两数之和为 : $val" #表达式和运算符之间要有空格
执行脚本
二、算数运算符
| | |
|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| 不相等。用于比较两个数字,不相同则返回 true。 | |
例如:
a=10b=20val=`expr $a + $b`echo "a + b : $val"val=`expr $a - $b`echo "a - b : $val"val=`expr $a \* $b`echo "a * b : $val"val=`expr $b / $a`echo "b / a : $val"val=`expr $b % $a`echo "b % a : $val"if [ $a == $b ]then echo "a 等于 b"fiif [ $a != $b ]then echo "a 不等于 b"fi
执行脚本
a + b : 30a - b : -10a * b : 200b / a : 2b % a : 0a 不等于 b
三、关系运算符(关系运算符只支持数字,不支持字符串,除非字符串的值是数字)。
| | |
|---|
| | |
| | |
| 检测左边的数是否大于右边的,如果是,则返回 true。 | |
| 检测左边的数是否小于右边的,如果是,则返回 true。 | |
| 检测左边的数是否大于等于右边的,如果是,则返回 true。 | |
| 检测左边的数是否小于等于右边的,如果是,则返回 true。 | |
例如:
a=10b=20if [ $a -eq $b ]then echo "$a -eq $b : a 等于 b"else echo "$a -eq $b: a 不等于 b"fiif [ $a -ne $b ]then echo "$a -ne $b: a 不等于 b"else echo "$a -ne $b : a 等于 b"fiif [ $a -gt $b ]then echo "$a -gt $b: a 大于 b"else echo "$a -gt $b: a 不大于 b"fiif [ $a -lt $b ]then echo "$a -lt $b: a 小于 b"else echo "$a -lt $b: a 不小于 b"fiif [ $a -ge $b ]then echo "$a -ge $b: a 大于或等于 b"else echo "$a -ge $b: a 小于 b"fiif [ $a -le $b ]then echo "$a -le $b: a 小于或等于 b"else echo "$a -le $b: a 大于 b"fi
执行脚本
10 -eq 20: a 不等于 b10 -ne 20: a 不等于 b10 -gt 20: a 不大于 b10 -lt 20: a 小于 b10 -ge 20: a 小于 b10 -le 20: a 小于或等于 b
四、布尔运算符
| | |
|---|
| 非运算,表达式为 true 则返回 false,否则返回 true。 | |
| 或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
| 与运算,两个表达式都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
实例
a=10b=20if [ $a != $b ]then echo "$a != $b : a 不等于 b"else echo "$a == $b: a 等于 b"fiif [ $a -lt 100 -a $b -gt 15 ]then echo "$a 小于 100 且 $b 大于 15 : 返回 true"else echo "$a 小于 100 且 $b 大于 15 : 返回 false"fiif [ $a -lt 100 -o $b -gt 100 ]then echo "$a 小于 100 或 $b 大于 100 : 返回 true"else echo "$a 小于 100 或 $b 大于 100 : 返回 false"fiif [ $a -lt 5 -o $b -gt 100 ]then echo "$a 小于 5 或 $b 大于 100 : 返回 true"else echo "$a 小于 5 或 $b 大于 100 : 返回 false"fi
执行脚本
10 != 20 : a 不等于 b10 小于 100 且 20 大于 15 : 返回 true10 小于 100 或 20 大于 100 : 返回 true10 小于 5 或 20 大于 100 : 返回 false
五、逻辑运算符
| | |
|---|
| | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
| | [[ $a -lt 100 || $b -gt 100 ]] 返回 true |
例如:
a=10b=20if [[ $a -lt 100 && $b -gt 100 ]]then echo "返回 true"else echo "返回 false"fiif [[ $a -lt 100 || $b -gt 100 ]]then echo "返回 true"else echo "返回 false"fi
执行脚本
六、字符串运算符
| | |
|---|
| | |
| | |
| | |
| 检测字符串长度是否不为 0,不为 0 返回 true。 | |
| | |
例如:
a="abc"b="efg"if [ $a = $b ]then echo "$a = $b : a 等于 b"else echo "$a = $b: a 不等于 b"fiif [ $a != $b ]then echo "$a != $b : a 不等于 b"else echo "$a != $b: a 等于 b"fiif [ -z $a ]then echo "-z $a : 字符串长度为 0"else echo "-z $a : 字符串长度不为 0"fiif [ -n "$a" ]then echo "-n $a : 字符串长度不为 0"else echo "-n $a : 字符串长度为 0"fiif [ $a ]then echo "$a : 字符串不为空"else echo "$a : 字符串为空"fi
执行脚本
abc = efg: a 不等于 babc != efg : a 不等于 b-z abc : 字符串长度不为 0-n abc : 字符串长度不为 0abc : 字符串不为空
七、文件测试运算符
| | |
|---|
| 检测文件是否是块设备文件,如果是,则返回 true。 | |
| 检测文件是否是字符设备文件,如果是,则返回 true。 | |
| | |
| 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 | |
| 检测文件是否设置了 SGID 位,如果是,则返回 true。 | |
| 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 | |
| 检测文件是否是有名管道,如果是,则返回 true。 | |
| 检测文件是否设置了 SUID 位,如果是,则返回 true。 | |
| | |
| | |
| | |
| 检测文件是否为空(文件大小是否大于0),不为空返回 true。 | |
| 检测文件(包括目录)是否存在,如果是,则返回 true。 | |
例如:
file="/var/www/zu/health.sh"if [ -r $file ]then echo "文件可读"else echo "文件不可读"fiif [ -w $file ]then echo "文件可写"else echo "文件不可写"fiif [ -x $file ]then echo "文件可执行"else echo "文件不可执行"fiif [ -f $file ]then echo "文件为普通文件"else echo "文件为特殊文件"fiif [ -d $file ]then echo "文件是个目录"else echo "文件不是个目录"fiif [ -s $file ]then echo "文件不为空"else echo "文件为空"fiif [ -e $file ]then echo "文件存在"else echo "文件不存在"fi
执行脚本
文件可读文件可写文件可执行文件为普通文件文件不是个目录文件不为空文件存在
八、自增和自减操作符
1.使用 let 命令
num=5 #初始化变量let num++ # 自增let num-- # 自减echo $num
2.使用 $(( )) 进行算术运算
num=5 # 初始化变量num=$((num + 1)) # 自增num=$((num - 1)) # 自减echo $num
3.使用 expr 命令
num=5 # 初始化变量num=$(expr $num + 1) # 自增num=$(expr $num - 1) # 自减echo $num
4.使用 (( )) 进行算术运算
num=5 # 初始化变量((num++)) # 自增((num--)) # 自减echo $num
# 初始化变量num=5echo "初始值: $num"# 自增let num++echo "自增后: $num"# 自减let num--echo "自减后: $num"# 使用 $(( ))num=$((num + 1))echo "使用 $(( )) 自增后: $num"num=$((num - 1))echo "使用 $(( )) 自减后: $num"# 使用 exprnum=$(expr $num + 1)echo "使用 expr 自增后: $num"num=$(expr $num - 1)echo "使用 expr 自减后: $num"# 使用 (( ))((num++))echo "使用 (( )) 自增后: $num"((num--))echo "使用 (( )) 自减后: $num"
运行这个脚本
初始值: 5自增后: 6自减后: 5使用 $(( )) 自增后: 6使用 $(( )) 自减后: 5使用 expr 自增后: 6使用 expr 自减后: 5使用 (( )) 自增后: 6使用 (( )) 自减后: 5