Shell运算符

一 包括

  -->算数运算符,关系运算符,布尔运算符,字符串运算符,文件测试运算符。

二 算数运算符

  下表列出了常用的运算符,假设变量a=10,b=20。

  

运算符  说明 举例
+ 加法

echo `expr $a + $b`  输出30

- 减法 echo `expr $a - $b`  输出-10
* 乘法

echo `expr $a * $b`    输出200

除法 echo `expr $a / $b`    输出2
% 取余 echo `expr $b % $a` 输出0
= 赋值 a=$b 将把变量 b 的值赋给 a
== 相等,如果相同返回true [ $a == $b ] 返回 false
!= 不相等,如果不相等返回true [ $a != $b ] 返回 true
#!/bin/sh
a=20 b=10 echo "jia: `expr $a + $b`" echo "jian: `expr $a - $b`" echo "cheng: `expr $a * $b`" echo "chu: `expr $a / $b`" echo "quyu: `expr $a % $b`"

 if [ $a == $b ]

  then

     echo "a==b"

 fi


  if [ $a != $b ]

then
   echo "a!=b"
fi
a=$b

三 关系运算符

  只支持数字,不支持字符串,如果字符串是数字的也可以。

  假设变量a=20,b=10。

运算符   说明 举例
-eq 判断两个数是否相等,相等返回true [$a -eq $b]  返回false
-ne 判断两个数是否不相等,不相等返回true [$a -ne $b] 返回true
-gt 判断左边的是否大于右边的,是就返回true [$a -gt $b] 返回true
-lt 判断左边的是否小于右边的,是就返回true [$a -lt $b] 返回false
-ge 判断左边的是否大于等于右边的,是就返回true [$a -ge $b] 返回true
-le 判断左边的是否小于等于右边的,是就返回true [$a -le $b] 返回false

eg:实例

#!/bin/sh
a=20
b=10

if [ $a -eq $b ]
then
   echo "true"
else
   echo "false"
fi

if [ $a -ne $b ]
then
   echo "true"
else
   echo "false"
fi

if [ $a -gt $b ]
then
   echo "true"
else
   echo "false"
fi



if [ $a -lt $b ]
then
   echo "true"
else
   echo "false"
fi

if [ $a -ge $b ]
then
   echo "true"
else
   echo "false"
fi

if [ $a -le $b ]
then
   echo "true"
else
   echo "false"
fi

结果:

  false

      true

      true

      false

      true

      false

四 布尔运算符

  假设a=20,b=10。

运算符 说明 举例
! 表达式为false,返回true,否则返回false [!false] 返回true
-o 或运算,有一个表达式为true就返回true [ $a -gt $b -o $b -gt $b] 返回true
-a 与运算,表达式都为true才返回true [ $a -gt $b -a $b -lt $b] 返回true

eg:实例

#!/bin/sh
a=20
b=10

if [ !false ]
then
   echo "true"
else
   echo "false"
fi

if [ $a -gt $b -o $a -lt $b ]
then
   echo "true"
else
   echo "false"
fi

if [ $a -gt $b -a $b -lt $a ]
then
   echo "true"
else
   echo "false"
fi

结果:

  true

  true

  true

五 逻辑运算符

  假设a=20,b=10。

运算符 说明 举例
&& 逻辑的AND
[[ $a -gt $b && $b -lt $a ]]  返回true
|| 逻辑的OR
[[ $a -gt $b || $a -lt $b ]]  返回true

eg:实例

#!/bin/sh
a=20
b=10

if [[ $a -gt $b && $b -lt $a ]]
then
   echo "true"
else
   echo "false"
fi

if [[ $a -gt $b || $a -lt $b ]]
then
   echo "true"
else
   echo "false"
fi

结果:

  true

  true

六 字符串运算符

  假设字符串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

  

 

eg:实例

#!/bin/sh
a="abc"
b="efg"

if [ $a = $b ]
then
   echo "true"
else
   echo "false"
fi

if [ $a !=  $b ]
then
   echo "true"
else
   echo "false"
fi

if [ -z $a ]
then
   echo "true"
else
   echo "false"
fi

if [ -n $b ]
then
   echo "true"
else
   echo "false"
fi

if [ $a ]
then
   echo "true"
else
   echo "false"
fi

结果:

  false

      true

      false

      true

      true

七 文件测试运算符

  文件测试运算符用于检测 Unix 文件的各种属性。 

  

操作符 说明 举例
-b file 检测文件是否是块设备文件,如果是,则返回 true [ -b $file ] 返回 false
-c file 检测文件是否是字符设备文件,如果是,则返回 true [ -c $file ] 返回 false
-d file 检测文件是否是目录,如果是,则返回 true [ -d $file ] 返回 false
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true [ -f $file ] 返回 true
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true [ -g $file ] 返回 false
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true [ -k $file ] 返回 false
-p file 检测文件是否是有名管道,如果是,则返回 true [ -p $file ] 返回 false
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true [ -u $file ] 返回 false
-r file 检测文件是否可读,如果是,则返回 true [ -r $file ] 返回 true
-w file 检测文件是否可写,如果是,则返回 true [ -w $file ] 返回 true
-x file 检测文件是否可执行,如果是,则返回 true [ -x $file ] 返回 true
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true [ -s $file ] 返回 true
-e file 检测文件(包括目录)是否存在,如果是,则返回 true [ -e $file ] 返回 true

 

  

eg:实例

  变量 file 表示文件"/usr/test.sh",它的大小为100字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性: 

  

#!/bin/sh


file="/usr/test.sh"
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi
if [ -w $file ]
then
   echo "文件可写"
else
   echo "文件不可写"
fi
if [ -x $file ]
then
   echo "文件可执行"
else
   echo "文件不可执行"
fi
if [ -f $file ]
then
   echo "文件为普通文件"
else
   echo "文件为特殊文件"
fi
if [ -d $file ]
then
   echo "文件是个目录"
else
   echo "文件不是个目录"
fi
if [ -s $file ]
then
   echo "文件不为空"
else
   echo "文件为空"
fi
if [ -e $file ]
then
   echo "文件存在"
else
   echo "文件不存在"
fi

结果:

  文件可读

  文件可写

  文件可执行

  文件为普通文件  

  文件不是个目录

  文件不为空

  文件存在

 这篇分享给大家的是一些运算符,种类挺多,可以学习借鉴下,喜欢的记得给小编来个赞啊。

原文地址:https://www.cnblogs.com/lyr999736/p/9019662.html