一尘不染

一行执行多个Linux命令

linux

我试图在一行中合并多个Linux命令以执行部署操作。例如

cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install

阅读 368

收藏
2020-06-02

共1个答案

一尘不染

如果仅在上一个命令成功的情况下才执行每个命令,请使用&&运算符将它们组合:

cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install

如果其中一个命令失败,则将不执行其后的所有其他命令。

如果要执行所有命令而不管先前的命令是否失败,请使用分号将它们分开:

cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install

在您的情况下,我想您希望第一种情况下,下一条命令的执行取决于上一条命令的成功。

您还可以将所有命令放在脚本中,然后执行该脚本:

#! /bin/sh
cd /my_folder \
&& rm *.jar \
&& svn co path to repo \
&& mvn compile package install

(在行的末尾使用反斜杠可以防止外壳程序认为下一行是新命令;如果省略了反斜杠,则需要将整个命令写在一行中。)

将其保存到文件,例如myscript,并使其可执行:

chmod +x myscript

现在,您可以像计算机上的其他程序一样执行该脚本。但是,如果您不将其放置在PATH环境变量中列出的目录中(例如/usr/local/bin,或在某些Linux发行版中~/bin),则需要指定该脚本的路径。如果它在当前目录中,则使用以下命令执行它:

./myscript

脚本中的命令的工作方式与第一个示例中的命令相同。下一条命令仅在上一条成功的情况下执行。为了无条件地执行所有命令,只需在每个命令的行中列出每个命令:

#! /bin/sh
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
2020-06-02