Shell判断条件

Shell判断条件教程

Shell 中,[[ ]] 是 Shell 的内置命令,用于检测某个条件是否成立。

test 能做到的,[[ ]] 也能做到,而且 [[ ]] 做的更好;test 做不到的,[[ ]] 还能做到。可以认为 [[ ]] 是 test 的升级版,对细节进行了优化,并且扩展了一些功能。

Shell判断条件详解

语法

[[ expression ]]

参数

参数 描述
expression 需要判断的表达式

说明

[[ ]] 判断 expression 成立时,退出状态为 0,否则为非 0 值。注意 [[ ]] 和 expression 之间的空格,这两个空格是必须的,否则会导致语法错误。

技术细节

[[ ]] 是 Shell 内置关键字,不是命令,在使用时没有给函数传递参数的过程,所以 test 命令的某些注意事项在 [[ ]] 中就不存在了,具体包括:

  1. 不需要把变量名用双引号""包围起来,即使变量是空值,也不会出错。

  2. 不需要、也不能对 >、< 进行转义,转义后会出错。

案例

比较大小

使用 [[ ]] 运算符,实现大小比较判断

#!/bin/bash a=10 b=20 if [[ $a < $b ]] then echo "a < b" else echo "a >= b" fi

程序运行后,控制台输出如下:

15_Shell条件判断.png

我们使用了 [[ ]] 运算符,实现了两个数的大小的比较。

逻辑运算

使用 [[ ]] 运算符,实现逻辑运算

#!/bin/bash a=10 b=20 if [[ -z $a ]] && [[ -z $b ]] then echo "a && b" else echo "not a && b" fi

程序运行后,控制台输出如下:

16_Shell条件判断.png

我们使用了 [[ ]] 实现了逻辑运算。

Shell判断条件总结

在 Shell 中,[[ ]] 是 Shell 的内置命令,用于检测某个条件是否成立。

test 能做到的,[[ ]] 也能做到,而且 [[ ]] 做的更好;test 做不到的,[[ ]] 还能做到。可以认为 [[ ]] 是 test 的升级版,对细节进行了优化,并且扩展了一些功能。