shell编程之运算符

原生bash不支持简单的数学运算,但是可借助于expr/awk等命令实现,这两个命令尤其强大

算数运算符

echo "shell编程之运算符"

echo "输入的第一个参数x:$1"
echo "输入的第二个参数y:$2"

x=$1
y=$2

echo "x+y=`expr $1 + $2`"
echo "x-y=`expr $1 - $2`"
echo "x*y=`expr $1 \* $2`"
echo "y/x=`expr $2 / $1`"
echo "y%x=`expr $2 % $1`"
if [ $1 == $2 ]
then
   echo "x 等于 y"
fi
if [ $1 != $2 ]
then
   echo "x 不等于 y"
fi

chmod u+x test.sh
./test.sh 5 10 
###输出结果###
shell编程之运算符
输入的第一个参数x:5
输入的第二个参数y:10
x+y=15
x-y=-5
x*y=50
y/x=2
y%x=0
x 不等于 y

注意:
1.进行算数运算时参数一定要空格,例如 $x + $y,而 $x+$y是错误的;
2.条件运算符之间要严格的空格,例如 [ $x == $y ],而 [$x == $y]是错误的;
3.expr命令需要``来包裹,不是单引号,而是Esc键下面那个;
4.使用乘法时需要结合 "\*"来使用;

关系运算符

关系运算符不支持字符串,除非该字符串是数字
命令
说明
-eq
判断两值是否相等
-ne
判断两值是否不相等
-gt
判断左边的数是否大于右边的数
-lt
判断左边的数是否小于右边的数
-ge
判断左边的数是否大于等于右边的数
-le
判断左边的数是否小于等于右边的数
a=5
b=10

if a -eq b
then
 echo "a -eq b 为true"
else
 echo "a -eq b 为false"
fi

chmod u+x test.sh
./test.sh
###输出结果###
a -eq b 为false

逻辑/布尔运算符

命令
说明
!
非运算,表示取反
-o或者 ||
或运算,表示其中一个满足时返回true
-a或者 &&
与运算,表示同时满足时返回true

字符串运算符

命令
说明
=
判断两字符串是否相等
!=
判断两字符串是否相等,不相等返回true
-z
判断字符串长度是否为0,为0返回true
-n
判断字符串长度是否为0,不为0返回true
[$str]
判断字符串是否为空,不为空返回true
z="sss"
v="ddd"
if [ $z ]
then
  echo "变量z值不为空"
else
  echo "变量z值为空"
fi

if [ $z = $v ]
then
  echo "z和v相等"
else
  echo "z和v不相等"
fi

猜你喜欢

转载自blog.csdn.net/fanrenxiang/article/details/80315729