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
结果:
文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在
这篇分享给大家的是一些运算符,种类挺多,可以学习借鉴下,喜欢的记得给小编来个赞啊。