我在bash中运行命令,如下所示:
cd path &&
service service1 stop &&
(run some scripts) &&
service service1 start &&
service service2 restart
是否有任何工具可以在没有“&&”的情况下运行命令最终会像那里一样?现在我只是添加“&&”使用文本编辑器中的替换功能,我知道我可以编写简单的脚本来自动执行此操作,但如果在repo中有工具,则会很棒。
答案 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中进行了解释。