每日Linux学习:比较符号、逻辑符号在 [] 和 [[]] 中的适用对比

前面连续谈了几篇有关 test / [] ,[[]] 的用法:

每日Linux学习:脚本学习test命令

每日Linux学习:脚本学习 [ ] 与 [ [ ] ] 的区别

本文将比较符号、逻辑符号在 [](test 命令)和 [[]](bash 扩展测试)中的用法做一个全面的对比

注意事项

1、数值比较:在 [] 和 [[]] 中均使用 -eq, -ne, -gt, -ge, -lt, -le。

2、字符串比较:[] 中 = 和 != 是标准用法,< 和 > 需要转义(\<, \>)。

3、[[]] 中直接支持 <, >, ==, =~(正则匹配)。

4、逻辑操作:

[] 中只能用 -a, -o, !(已废弃,不推荐)。

[[]] 中支持更直观的 &&, ||, !。

5、文件判断:-e, -f, -d 等在两者中均适用。

6、正则匹配:仅 [[]] 支持 =~。


示例

1、数值比较

[ "$a" -gt 3 ] || echo "Greater"

[[ "$a" -gt 3 ]] && echo "Greater"

注意:在方括号外面的 && 或 || 与 方括号 [[]] 里面 && 意义不同 ,

在 [[]] 里面表示逻辑与、逻辑或。

在方括号外面 && 和 || 表示条件执行。参考:《每日Linux学习:脚本学习之条件执行 && 和 ||》


2、字符串比较

[ "$s" = "abc" ] && echo "Equal"

[[ "$s" == "abc" ]] && echo "Equal"


3、正则匹配(仅 [[]])

[[ "$s" =~ ^a ]] && echo "Starts with a"


4、逻辑组合

[[ "$a" -eq 1 && "$b" -eq 2 ]] && echo "Both true"

[ "$a" -eq 1 -a "$b" -eq 2 ] && echo "Both true" # 不推荐


建议在 Bash 脚本中优先使用 [[]],因为它更灵活且功能更强大。

原文链接:,转发请注明来源!