花括号是否适合替代其他结构?
[ -n "$TEST" ] && { XX='yes'; echo 'yes' } || { XX='no'; echo 'no' }
VS
if [ -n "$TEST" ] ; then
XX='yes'; echo 'yes'
else
XX='no'; echo 'no'
fi
另一个:
for num in {000..2}; do echo "$num"; done
或
for num in {000..2}; { echo "$num"; }
答案 0 :(得分:3)
在您的第一个示例中,如果A && B || C
的退出状态为非零,则if A; then B else C
和B
会有不同的行为。
[ -n "$TEST" ] && { echo this; false; } || { echo "this too?"; }
你的第二个例子是应该是语法错误。文档中没有任何内容表明您可以将do
/ done
对替换为另一个复合命令({...}
是什么)。
更新:bash
的维护者告诉我,这是一个未记录的功能,它向后兼容原始Bourne shell中的未记录的功能。