自动将一堆命令转换为command1&&命令2

时间:2017-12-08 13:58:23

标签: linux bash

我在bash中运行命令,如下所示:

cd path &&
service service1 stop &&
(run some scripts) &&
service service1 start &&
service service2 restart

是否有任何工具可以在没有“&&”的情况下运行命令最终会像那里一样?现在我只是添加“&&”使用文本编辑器中的替换功能,我知道我可以编写简单的脚本来自动执行此操作,但如果在repo中有工具,则会很棒。

2 个答案:

答案 0 :(得分:0)

&&允许您根据上一个命令是否成功完成来执行某些操作。它可以用于链接命令,以便下一个命令仅在前一个命令运行时运行。 如果这是您的目标,那么有一种更简单的方法。如果您只想在前一个命令成功的情况下运行下一个命令,您可能需要使用:
set -euo pipefail
如果任何命令失败(返回非零状态),则脚本将停止 来自http://tldp.org/LDP/abs/html/options.html
- set -e - >当命令以非零状态退出时(在for循环或while循环,if-tests,list构造中除外),在第一次出错时中止脚本
- set -u - >尝试使用未定义的变量输出错误消息,并强制退出
- set -o pipefail - >导致管道返回管道中返回非零返回值的最后一个命令的退出状态。

(我编写的每个shell脚本都以set -euo pipefail开头。这是一个很好的做法。)

答案 1 :(得分:0)

您可以使用sed:sed ':a;N;$!ba;s/\n/ \&\& /g' < in.txt > out.txt

如何运作在this question中进行了解释。