想象一下代码:
ls || echo "Unable to execute ls (returned non zero)"
如果我需要执行更多命令,例如:
,该怎么办?ls || echo "this is echo 1" <some operator> echo "this is echo 2" <some operator> exit 1
C中的(假设我有函数ls)我可以做(即使看起来很疯狂):
ls() || (command1() && command2());
但我怀疑我可以在bash中使用这样的括号
编辑:我知道我可以创建一个包含这些命令的bash函数,但是如果我需要将它与exit 1结合起来(在函数中退出将退出该函数,而不是整个脚本)
答案 0 :(得分:16)
您可以在{ }
中group多个命令。话说:
some_command || { command1; command2; }
如果command1
以非零返回码退出,将执行command2
和some_command
。
{}
{ list; }
在大括号之间放置命令列表会导致列表在当前shell上下文中执行。没有创建子shell。该 需要以下分号的分号(或换行符)。
答案 1 :(得分:5)
事实上,你可以使用括号。他们只是告诉bash“在子shell中运行命令”。你也可以使用curlies:
ls || { echo 1 ; echo 2 ; }
请注意,;
或收盘前的换行符不可选。