一、算术运算符
expr 表达式 or var=`expr 表达式`
1、示例
[root@vm-paas scwyfy]# cat expr_demo.sh
#!/bin/bash
read -p "请输入第一个数字:" a
read -p "请输入第二个数字:" b
echo "a=${a}, b= ${b}"
echo "a+b= `expr ${a} + ${b}`"
echo "a-b= `expr ${a} - ${b}`"
echo "a*b= `expr ${a} \* ${b}`"
echo "b/a= `expr ${b} / ${a}`"
echo "b%a= `expr ${b} % ${a}`"
[root@vm-paas scwyfy]# sh expr_demo.sh
请输入第一个数字:1
请输入第二个数字:2
a=1, b= 2
a+b= 3
a-b= -1
a*b= 2
b/a= 2
b%a= 0
二、运算比较符
1. 整数型比较
方式1 [ $a operation $b ]
operation: -eq -ne -gt -lt -ge -le
方式2 (($a operation $b))
operation: == != > < >= <=
2. 字符串比较
方式1 [ $a operation $b ]
operation: > < == !=
> < 需要转义
会发生word splitting
eg a="abc" b="abc efg"
[ $a == $b ] :报错,$b会被拆分成多个值
方式2 [[ $a operation $b ]]
operation: > < == !=
无需转义,不会发生word splitting 推荐使用[[]]
示例脚本
[root@vm-paas scwyfy]# cat operation_int.sh
#!/bin/bash
read -p "请输入a: " a
read -p "请输入b: " b
echo "a=${a}, b=${b}"
if [ $a -eq $b ]
then
echo " a eq b "
else
echo " a ne b"
fi
if [ $a -lt $b ]
then
echo " a lt b"
else
echo " a ge b"
fi
if [ $a -gt $b ]
then
echo "a gt b"
else
echo "a le b"
fi
[root@vm-paas scwyfy]#
三、布尔运算符、逻辑运算符
布尔运算符:! -o -a
[ ! 1 \> 2 ]: echo $? 返回0
[ 1 \> 2 -o 1 == 1 ]: echo $? 返回0
[ 1 \> 2 -a 1 == 1 ]: echo $? 返回1
逻辑运算符:! || &&
[[ ! 1 > 2 ]]: echo $? 返回0
[[ 1 > 2 || 1 == 1 ]]: echo $? 返回0
[[ 1 > 2 && 1 == 1 ]]: echo $? 返回1
区别:
布尔运算符必须有[] 或 test命令执行
逻辑运算符必须有[[]]执行