一、声明
本文章为学习笔记,转载请标明文章末尾的参考博文链接。
二、简介
每种变成语言都有自己的运算符,shell也是。shell的运算符和别的变成语言基本一样,只是在细节上有些不同。
三、shell支持的运算符如下
1.算数运算符
原生bash不支持简单的数学运算,有两种方式可以实现数学运算。
1.使用其他命令,例如awk和expr、let。
let用法:let a=1+2
expr用法:a=`expr 1 + 2`
注意:1 + 2 中间需要有空格,完整的表达式需要被“包含,注意这个字符不是常用的单引号,在Esc键下边。
2.使用$[],将数学运算符写到$[]里面,即会先对中括号里面的内容进行数学运算。
用法a=$[1+1]
shell支持的算数运算符如下:
+ 加法
示例:let a=1+20
示例:`expr 1 + 20`
示例:echo $[1 + 20]
– 减法
示例:let a=1-20
示例:`expr 1 – 20`
示例:echo $[1 – 20]
– 乘法
示例:let a=120
示例:`expr 1 * 20`
对于expr,使用前面必须有\
示例:echo $[1 * 20]
/ 除法
示例:let a=1/20
示例:`expr 1 / 20`
示例:echo $[1 / 20]
% 取余
示例:let a=1%20
示例:`expr 1 % 20`
示例:echo $[1 %20]
= 赋值
示例:a=1;b=2
== 相等 比较两个数字,相同返回true,不相同返回false。
示例:[ $a == $b ]
!= 不相等 比较两个数字,不相同返回true,相同返回false。
示例:[ $a != $b ]
2.关系运算符
-eq 检测两个数是否相等,相等返回true,不相等返回false。 示例:
#!/bin/bash
if [ 20 -eq 30 ];then
echo true
else
echo false
fi
返回结果:flase
-ne 检测两个数是否相等,不相等返回true,相等返回false。 示例:
#!/bin/bash
if [ 20 -ne 30 ];then
echo true
else
echo false
fi
返回结果:true
-gt 检测左边的数是否大于右边的,如果大于,返回true;如果小于,返回false。 示例:
#!/bin/bash
if [ 20 -gt 30 ];then
echo true
else
echo false
fi
返回结果:true
-lt 检测左边的数是否小于右边的,如果小于,返回true;如果大于,返回false。 示例:
#!/bin/bash
if [ 20 -lt 30 ];then
echo true
else
echo false
fi
返回结果:true
-ge 检测左边的数是否大于等于右边的,如果是,返回true,如果不是,返回false。 示例:
#!/bin/bash
if [ 20 -ge 30 ];then
echo true
else
echo false
fi
返回结果:flase
-le 检测左边的书是否小于等于右边的,如果是,返回true,如果不是返回false。 示例:
#!/bin/bash
if [ 20 -le 30 ];then
echo true
else
echo false
fi
返回结果:true
3.布尔运算符
! 非运算,表达式为true 则返回false,否则返回true。 示例:
#!/bin/bash
if [ ! 20 -le 30 ];then
echo false
else
echo true
fi
返回结果:true
-o 或运算,有一个表达式为true 则返回true。 示例:
#!/bin/bash
if [ 20 -le 30 -o 30 -eq 20 ];then
echo true
else
echo flase
fi
返回结果:true
-a 与运算,两个表达式都为true 才返回true。 示例:
#!/bin/bash
if [ 20 -le 30 -a 30 -eq 20 ];then
echo true
else
echo flase
fi
返回结果:flase
4.逻辑运算符
&& 逻辑的AND
示例:
#!/bin/bash
if [[ 10 -lt 100 && 20 -gt 100 ]];then
echo true
else
echo flase
fi
返回结果:flase
|| 逻辑的OR
示例:
#!/bin/bash
if [[ 10 -lt 100 || 20 -gt 100 ]];then
echo true
else
echo flase
fi
返回结果:true
5.字符串运算符
检测变量a为”abc”,变量b为”efg”
= 检测两个字符串是否相等,相等返回true。
示例:
[ $a = $b ] 返回 false。
!= 检测两个字符串是否相等,不相等返回true。
示例:
[ $a != $b ] 返回 true。
-z 检测字符串长度是否为0,为0返回true。
示例:
[ -z $a ] 返回 false。
-n 检测字符串长度是否为0,不为0返回true。 示例:
[ -n $a ] 返回 true。
str 检测字符串是否为空,不为空返回true。
示例:
[ $a ] 返回 true。