一、条件表达式

条件表达式是用于判断条件是否满足的逻辑表达式,当条件为真,返回0,否则返回1。
常用语法:
1、test 测试表达式
2、[ 测试表达式 ] #两边需要有空格
3、[[ 测试表达式 ]]
4、(( 测试表达式 ))

第一种和第二种是等价的,第三种是扩展的test命令,第四种4常用于计算
在[[ ]] 双中括号中可以使用通配符等进行模式匹配,&& || > < 等操作符可以直接应用于双中括号中,但不能用于单中括号中。

1.test语法示例
[root@system1 ~]# test -f /etc/passwd && echo 1 || echo 0
1
[root@system1 ~]# test -f /etc/haha && echo 1 || echo 0
0

2.单中括号[]示例
[root@system1 ~]# [ -f /etc/passwd ]&& echo 1 || echo 0
1
[root@system1 ~]# [ -f /etc/haha ]&& echo 1 || echo 0
0

3.双中括号示例[[]]
[root@system1 ~]# [[ 3 > 2|| 1 > 2 ]]&& echo 1 || echo 0
1
[root@system1 ~]# [[ 3 > 2 && 1 > 2 ]]&& echo 1 || echo 0
0

二、数字比较符

示例:
[root@system1 ~]# [ 2 -gt 3 ]&& echo 1 || echo 0
[root@system1 ~]# [ 2 -lt 3 ]&& echo 1 || echo 0
[root@system1 ~]# test "2" -gt "1" && echo 1 || echo 0
[root@system1 ~]# test "2" -lt "1" && echo 1 || echo 0

LINUX基础培训二十五之shell表达式与运算-LMLPHP

三、文件状态比较符

示例:
[root@system1 ~]# [ -f  /etc/passwd ]&& echo 1 || echo 0
1
[root@system1 ~]# [ -d  /etc/passwd ]&& echo 1 || echo 0
0
 LINUX基础培训二十五之shell表达式与运算-LMLPHP

四、字符串比较符

示例:
[root@system1 ~]# [ " " ]&& echo 0 || echo 1
0
[root@system1 ~]# [ "ab" = "abc" ]&& echo 1 || echo 0
0
[root@system1 ~]# [ -n "abc" ]&& echo 1 || echo 0

LINUX基础培训二十五之shell表达式与运算-LMLPHP
 

五、算术运算符

示例:
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
 LINUX基础培训二十五之shell表达式与运算-LMLPHP

六、其他运算工具

除了 Shell 本身的算数运算表达式,还有几个命令支持复杂的算数运算,如右图所示:
示例:
# echo "1.2 < 2" |bc
1
# echo "1.2 > 2" |bc
0
# echo "1.2 == 2.2" |bc
0

# expr length "string"
6
截取字符串:
# expr substr "string" 4 6
ing

LINUX基础培训二十五之shell表达式与运算-LMLPHP

七、shell中括号用途

shell中会涉及大量括号的使用,有小夸号、大括号、中括号、双括号等,每种类型的用途各不相同,在具体场景下使用不同的括号,总结各类括号的用途如下:

LINUX基础培训二十五之shell表达式与运算-LMLPHP

 

03-03 14:59