我试图在一行中合并多个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
(行末尾的反斜杠用于防止shell认为下一行是新命令;如果省略反斜杠,则需要在一行中编写整个命令.)
将其保存到文件,例如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
标签:linux,command-line
来源: https://codeday.me/bug/20190926/1820724.html