如何在||之后使用多个命令在bash中

时间:2013-11-06 08:32:29

标签: bash

想象一下代码:

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结合起来(在函数中退出将退出该函数,而不是整个脚本)

2 个答案:

答案 0 :(得分:16)

您可以在{ }group多个命令。话说:

some_command || { command1; command2; }
如果command1以非零返回码退出,

将执行command2some_command

  

{}

{ list; }
     

在大括号之间放置命令列表会导致列表在当前shell上下文中执行。没有创建子shell。该   需要以下分号的分号(或换行符)。

答案 1 :(得分:5)

事实上,你可以使用括号。他们只是告诉bash“在子shell中运行命令”。你也可以使用curlies:

ls || { echo 1 ; echo 2 ; }

请注意,;或收盘前的换行符可选。