首页 > 解决方案 > 何时/如何决定何时在测试中使用括号

问题描述

我很难将我湿漉漉的小脑袋包裹在[ ], 引用的 vars 和-eqvs的各种用法上==

这些陈述之间有什么区别?是否像一个比另一个更符合posix一样简单,还是我应该担心功能上的差异?

[ ! -z "$var" ] && echo "Not empty" || echo "Empty"
[[ ! -z "$var" ]] && echo "Not empty" || echo "Empty"

那么:

if "$report" == "1"; then blah; fi

对比

if [ "$report" == "1" ]; then blah; fi

对比

[ "$report" -eq 1 ]; then blah

我知道这[是 shell 中的一个测试功能,但我不明白什么时候需要开始if或什么时候不需要。

标签: bash

解决方案


推荐阅读