一个简单的问题:与使用测试运算符进行测试相比,直接测试变量有何优势?如下:
[ -n "$foo" ] && echo "that's some variable :"$foo || echo '$foo is blank.'
对
[ $foo ] && echo "that's some variable :"$foo || echo '$foo is blank.'
第二个更优雅。但是我怀疑这一定是有原因的,因为有人麻烦使“ -z”和“ -n”存在。
我怀疑出于历史原因支持[ "$foo" ]
(引用参数扩展);曾几何时,通过省略显式的-n
可以节省两个字节,这很重要。
今天,为了清晰起见,我会总是明确使用-n
。
请注意,对于“单行”条件语句,请勿将&&
和||
组合在一起。使用if
语句。
if [ -n "$foo" ]; then
echo "that's some variable: $foo"
else
echo "foo is blank."
fi