在 Shell 中,[[ ]]
是 Shell 的内置命令,用于检测某个条件是否成立。
test 能做到的,[[ ]]
也能做到,而且 [[ ]]
做的更好;test 做不到的,[[ ]]
还能做到。可以认为 [[ ]]
是 test 的升级版,对细节进行了优化,并且扩展了一些功能。
[[ expression ]]
参数 | 描述 |
---|---|
expression | 需要判断的表达式 |
当 [[ ]]
判断 expression 成立时,退出状态为 0,否则为非 0 值。注意 [[ ]]
和 expression 之间的空格,这两个空格是必须的,否则会导致语法错误。
[[ ]]
是 Shell 内置关键字,不是命令,在使用时没有给函数传递参数的过程,所以 test 命令的某些注意事项在 [[ ]]
中就不存在了,具体包括:
不需要把变量名用双引号""包围起来,即使变量是空值,也不会出错。
不需要、也不能对 >、< 进行转义,转义后会出错。
使用 [[ ]]
运算符,实现大小比较判断
#!/bin/bash
a=10
b=20
if [[ $a < $b ]]
then
echo "a < b"
else
echo "a >= b"
fi
程序运行后,控制台输出如下:
我们使用了 [[ ]]
运算符,实现了两个数的大小的比较。
使用 [[ ]]
运算符,实现逻辑运算
#!/bin/bash
a=10
b=20
if [[ -z $a ]] && [[ -z $b ]]
then
echo "a && b"
else
echo "not a && b"
fi
程序运行后,控制台输出如下:
我们使用了 [[ ]]
实现了逻辑运算。
在 Shell 中,[[ ]]
是 Shell 的内置命令,用于检测某个条件是否成立。
test 能做到的,[[ ]]
也能做到,而且 [[ ]]
做的更好;test 做不到的,[[ ]]
还能做到。可以认为 [[ ]]
是 test 的升级版,对细节进行了优化,并且扩展了一些功能。