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