我试图在一行中合并多个Linux命令以执行部署操作。例如
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
如果其中一个命令失败,则将不执行其后的所有其他命令。
如果要执行所有命令而不管先前的命令是否失败,请使用分号将它们分开:
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,并使其可执行:
myscript
chmod +x myscript
现在,您可以像计算机上的其他程序一样执行该脚本。但是,如果您不将其放置在PATH环境变量中列出的目录中(例如/usr/local/bin,或在某些Linux发行版中~/bin),则需要指定该脚本的路径。如果它在当前目录中,则使用以下命令执行它:
PATH
/usr/local/bin
~/bin
./myscript
脚本中的命令的工作方式与第一个示例中的命令相同。下一条命令仅在上一条成功的情况下执行。为了无条件地执行所有命令,只需在每个命令的行中列出每个命令:
#! /bin/sh cd /my_folder rm *.jar svn co path to repo mvn compile package install