我需要大括号来指定评估优先级表达式,但我不希望括号创建下标。看看运行该示例代码时会发生什么:
示例脚本
#!/bin/bash
false || (echo "First" && exit 1)
false || (echo "Second" && exit 2)
exit 3
输出
First
Second
看起来大括号创建了子脚本,而 exit 不会导致主脚本退出。
最优雅的方式来做我想做的事是什么?最好没有块和嵌套。谢谢!
答案1
这些()
是括号,它们启动一个子 shell
这些{}
是括号,用于在当前 shell 内分组。exit
将退出您的脚本。
请注意,空格要求更加严格(后面{
需要跟空格;}
前面需要跟分号加空格,或者换行符)
false || { echo foo; echo bar; } # this is OK
false || {echo foo; echo bar} # not OK
看分组命令请参阅手册了解详细信息。