Shell 基本运算符
见菜鸟教程:http://www.runoob.com/linux/linux-shell-basic-operators.html Shell 和其他编程语言一样,支持多种运算符,包括:
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '): #!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val" 执行脚本,输出结果如下所示: 两数之和为 : 4 两点注意:
算术运算符下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
注意:条件表达式要放在方括号之间,并且要有空格,例如:[$a==$b]是错误的,必须写成[ $a == $b ]。 实例算术运算符实例如下: if 语法的结束语句为:fi,每个if 都要带上fi。 # author:菜鸟教程# url:www.runoob.com a=10 b20`expr $a + $b`"a + b : $val"`expr $a - $b`"a - b : $val"`expr $a * $b`"a * b : $val"`expr $b / $a`"b / a : $val"`expr $b % $a`"b % a : $val" if[ $a == $b ] then echo "a 等于 b"fi!="a 不等于 b"fi a + b 30 a --*200 b / a 2%0不等于 b
关系运算符 关系运算符只支持数字,不支持字符串,除非字符串的值是数字。 下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
关系运算符实例如下:
|
非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 |
或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回true。 |
与运算,两个表达式都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回false。 |
布尔运算符实例如下:
"$a != $b : a 不等于 b""$a != $b: a 等于 b"100a $b 15"$a 小于 100 且 $b 大于 15 : 返回 true""$a 小于 100 且 $b 大于 15 : 返回 false"o $b "$a 小于 100 或 $b 大于 100 : 返回 true""$a 小于 100 或 $b 大于 100 : 返回 false"5"$a 小于 5 或 $b 大于 100 : 返回 true""$a 小于 5 或 $b 大于 100 : 返回 false"且大于返回 true
或false
逻辑运算符
以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
逻辑的 OR | [[ $a -lt 100 || $b -gt 100 ]] 返回 true |
逻辑运算符实例如下:
[[&&]]"返回 true""返回 false"||false
true
字符串运算符
下表列出了常用的字符串运算符,假定变量 a 为 "abc",变量 b 为 "efg":
[ $a = $b ] 返回 false。 | |
[ $a != $b ] 返回true。 | |
检测字符串长度是否为0,为0返回 true。 | [ -z $a ] 返回 false。 |
检测字符串长度是否为0,不为0返回 true。 | [ -n $a ] 返回 true。 |
检测字符串是否为空,不为空返回 true。 | [ $a ] 返回true。 |
字符串运算符实例如下:
"abc""efg"="$a = $b : a 等于 b""$a = $b: a 不等于 b"z $a "-z $a : 字符串长度为 0""-z $a : 字符串长度不为 0"n $a "-n $a : 字符串长度不为 0""-n $a : 字符串长度为 0""$a : 字符串不为空""$a : 字符串为空"abc efg b
abc efg b
z abc 字符串长度不为n abc
abc 字符串不为空
文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。
属性检测描述如下:
-b file | 检测文件是否是块设备文件,如果是,则返回 true。 | [ -b $file ] 返回 false。 |
---|---|
检测文件是否是字符设备文件,如果是,则返回 true。 | [ -c $file ] 返回false。 |
检测文件是否是目录,如果是,则返回 true。 | [ -d $file ] 返回 false。 |
检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 | [ -f $file ] 返回true。 |
检测文件是否设置了 SGID 位,如果是,则返回 true。 | [ -g $file ] 返回false。 |
检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 | [ -k $file ] 返回false。 |
检测文件是否是有名管道,如果是,则返回 true。 | [ -p $file ] 返回false。 |
检测文件是否设置了 SUID 位,如果是,则返回 true。 | [ -u $file ] 返回false。 |
检测文件是否可读,如果是,则返回 true。 | [ -r $file ] 返回true。 |
检测文件是否可写,如果是,则返回 true。 | [ -w $file ] 返回true。 |
检测文件是否可执行,如果是,则返回 true。 | [ -x $file ] 返回true。 |
检测文件是否为空(文件大小是否大于0),不为空返回 true。 | [ -s $file ] 返回true。 |
检测文件(包括目录)是否存在,如果是,则返回 true。 | [ -e $file ] 返回true。 |
实例
变量 file 表示文件"/var/www/runoob/test.sh",它的大小为100字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性:file"/var/www/runoob/test.sh"r $file "文件可读""文件不可读"w $file "文件可写""文件不可写"x $file "文件可执行""文件不可执行"f $file "文件为普通文件""文件为特殊文件"d $file "文件是个目录""文件不是个目录"s $file "文件不为空""文件为空"e $file "文件存在""文件不存在"文件可读文件可写文件可执行文件为普通文件文件不是个目录文件不为空文件存在
EQ 就是 EQUAL等于
NE 就是 NOT EQUAL不等于
GT 就是 GREATER THAN大于
LT 就是 LESS THAN小于
GE 就是 GREATER THAN OR EQUAL 大于等于
LE 就是 LESS THAN OR EQUAL 小于等于
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!