Linux 一些表达式和运算符
条件表达式
表达式 | 示例 |
---|---|
[ expression ] | [ 5 -eq 5 ] |
[[ expression ]] | [[ 5 -eq 5 ]] |
test expression | test 1 -eq 1 |
以下符号用于整数比较测试:
| 比较符 | 含义 | 示例|
| ------ | ------ |
| -eq | 等于|[ 5 -eq 5 ] 结果为True|
| -ne | 不等于 |[ 5 -ne 5 ] 结果为False|
|-gt|大于|[ 5 -gt 5 ] 结果为False |
|-lt|小于|[ 6 -lt 4 ] 结果为False|
|-ge|大于或等于|[ 6 -ge 6 ] 结果为True|
|-le|小于或等于|[ 8 -le 8 ] 结果为True|
以下符号用于字符串比较
| 符号 | 描述 |示例(以下的反斜线和符号之间应该是没有空格的)|
| ------ | ------ |
| == | 等于 | [ "b" == "b" ] 结果为True|
| !=| 不等于 |[ "b" != "b" ] 结果为False|
|>|根据ASCII码表判断大小,大于| [ 10 \ > 9 ]、[[ 10 > 9 ]] 、(( 9 > 10 ))结果为False|
|<|根据ASCII码表判断大小,小于| [ 10 \ < 9 ]、[[ 10 < 9 ]]、(( 9 < 10 )) 结果为True|
|>=|大于等于|(( 9 >= 9 )) 结果为True|
|<=|小于等于|(( 9<= 10 )) 结果为True|
|-n|字符串长度不等于0则为真|var1=10;var2="",[ -n "$var1" ] 结果为True,[ -n "$var2" ] 结果为False|
|-z|字符串长度等于0则为真|[ -z "$var1" ],结果为False,[ -z "$var2" ],结果为True|
|str|字符串存在则为真|[ $var1 ]为True,[ $var2 ]为False|
注意:
使用-z或者-n判断字符串长度时,变量要加双引号
如果使用双中括号就不用双引号了
文件测试:
|测试符| 含义 |示例|
| ------ | ------ |
|-e |文件或目录存在为真 |[ -e dir/file/path ] 存在为 True|
|-f |文件存在为真 |[ -f file ]文件存在为 True|
|-d| 目录存在为真 |[ -d dir ] 目录存在为 True|
|-r |有读权限为真 |[ -r file ] file 有读权限为 True|
|-w| 有写权限为真 |[ -w file ] file 有写权限为 True|
|-x| 有执行权限为真 |[ -x file ] file 有执行权限为 True|
|-s|文件存在并且大小大于0为真|[ -s file ] file_path 存在并且大小大于 0
为 True|
布尔运算符:
|运算符| 含义| 示例|
| ------ | ------ |
|!|非关系,将结果取反 |[ ! 9 -eq 8 ]为 true
|-a| AND, 且关系,在[ ]表达式中使用 |[ 1 -eq 1 -a 2 -eq 2 ]为 True,两边都要成立|
|-o| OR, 或关系,在[ ]表达式中使用 |[ 1 -eq 1 -o 2 -eq 1 ]为 True,一边成立即可|
逻辑表达式:
逻辑表达式有:&&(逻辑与)、||(逻辑或)、两者再[[ ]]和(())表达式中使用:
[[ 1 -eq 1 && 2 > 1 ]]结果为True
(( 1 == 1 && 2 > 1 ))结果为True
整数运算符:
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
运算表达式:
运算表达式 | 示例 |
---|---|
$(()) | $((5+5)) |
$[] | $[5+5] |
注意:
$(())表达式还可以做三目运算:
echo $((100>99?1:2)) 如果100大于99 就返回1否则返回2
返回值不支持字符串。