示例脚本

示例脚本

我需要大括号来指定评估优先级表达式,但我不希望括号创建下标。看看运行该示例代码时会发生什么:

示例脚本

#!/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

分组命令请参阅手册了解详细信息。

相关内容