花括号是否适合替代其他结构?
[ -n "$TEST" ] && { XX='yes'; echo 'yes' } || { XX='no'; echo 'no' }
对比
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"; }
最佳答案
在您的第一个示例中,A && B || C
和 如果 A;如果
具有不同的行为。B
具有非零退出状态,则 B else C
[ -n "$TEST" ] && { echo this; false; } || { echo "this too?"; }
你的第二个例子 is 应该是一个语法错误。文档中没有任何内容说您可以将 do
/done
对替换为另一个复合命令({...}
是什么)。
更新:bash
的维护者告诉我,这是一个未记录的功能,它提供与原始 Bourne shell 中未记录的功能的向后兼容性。
关于linux 大括号而不是 if-then-else-fi do-done,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38828762/