大文豪贤斌学长▲和即将用到Shell的人们谈谈Shell运算符


大文豪贤斌学长▲和即将用到Shell的人们谈谈Shell运算符
文章图片
Shell运算符
Shell各种判断结构和运算符的用法是shell编程的基础 , 了解shell的判断、运算符和一些退出状态对后面的学习有很重要的影响 。 shell有一个内部命令test经常用于对判断语句进行测试一种或几种状态的条件是否成立 。 Shell和其他编程语言一样 , 支持多种运算符 , 包括:算数运算符、关系运算符、布尔运算符、字符串运算符、文件测试运算符 。
expr是一款表达式计算工具 , 使用它能完成表达式的求值操作 。
例如 , 两个数相加 , 注意使用的是反引号`而非单引号':
#!/bin/bash
val=`expr2+3`
echo''两数之和为:$val''
执行脚本 , 输出结果如下所示:
两数之和为:5
两点注意:
表达式和运算符之间要有空格 , 例如2+3是错误的 , 必须写成2+3 , 这与我们熟悉的大多数编程语言有区别 。
完整的表达式要被``包含 , 注意这个字符非常用的单引号 , 在Esc键下边 。
算术运算符
下表列出了常用的算术运算符 , 假定变量x为10 , 变量y为20:
运算符说明举例
+加法`expr$x+$y`结果为30 。
-减法`expr$x-$y`结果为-10 。
*乘法`expr$x*$y`结果为200 。
/除法`expr$y/$x`结果为2 。
%取余`expr$y%$x`结果为0 。
=赋值x=$y将把变量y的值赋给x 。
==相等 。 用于比较两个数字 , 相同则返回true 。 [$x==$y]返回false 。
!=不相等 。 用于比较两个数字 , 不相同则返回true 。 [$x!=$y]返回true 。
注意:条件表达式要放在方括号之间 , 并且要有空格 , 例如:[$x==$y]是错误的 , 必须写成[$x==$y] 。
注意:乘号(*)前边必须加反斜杠()才能实现乘法运算;在MAC中shell的expr语法是:$((表达式)) , 此处表达式中的''*''非需要转义符号'''' 。
关系运算符
关系运算符只支持数字 , 非支持字符串 , 除非字符串的值是数字 。
下表列出了常用的关系运算符 , 假定变量x为10 , 变量y为20:
运算符说明举例
-eq检测两个数是否相等 , 相等返回true 。 [$x-eq$y]返回false 。
-ne检测两个数是否相等 , 不相等返回true 。 [$x-ne$y]返回true 。
-gt检测左边的数是否大于右边的 , 如果是 , 则返回true 。 [$x-gt$y]返回false 。
-lt检测左边的数是否小于右边的 , 如果是 , 则返回true 。 [$x-lt$y]返回true 。
-ge检测左边的数是否大于等于右边的 , 如果是 , 则返回true 。 [$x-ge$y]返回false 。
【大文豪贤斌学长▲和即将用到Shell的人们谈谈Shell运算符】-le检测左边的数是否小于等于右边的 , 如果是 , 则返回true 。 [$x-le$y]返回true 。
布尔运算符
下表列出了常用的布尔运算符 , 假定变量x为10 , 变量y为20:
运算符说明举例
!非运算 , 表达式为true则返回false , 否则返回true 。 [!false]返回true 。
-o或运算 , 有一个表达式为true则返回true 。 [$x-lt20-o$y-gt100]返回true 。
-a与运算 , 两个表达式都为true才返回true 。 [$x-lt20-a$y-gt100]返回false 。
逻辑运算符
以下介绍Shell的逻辑运算符 , 假定变量x为10 , 变量y为20:
运算符说明举例
&&逻辑的AND[[$x-lt100&&$y-gt100]]返回false
||逻辑的OR[[$x-lt100||$y-gt100]]返回true
字符串运算符
Shell编程是严格区分大小写的 , 并注意空格的问题 , 运算符左右的空格必需加上 。
下表列出了常用的字符串运算符 , 假定变量x为''abc'' , 变量y为''efg'':
运算符说明举例
=检测两个字符串是否相等 , 相等返回true 。 [$x=$y]返回false 。


推荐阅读