我试图合并多个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

其他回答

通知你, 如果在If -else中需要在一行中同时执行多条命令,可以使用圆括号将命令组合在一起。详情请参阅本页。

您可以根据需要将分号(;)替换为&&或||。请注意,括号创建了一个子shell来执行命令。

如果存在一个名为file_name的文件,以下命令将执行cmd1、cmd2和cmd3命令;否则为cmd4、cmd5、cmd6。

[ -f file_name ] && (cmd1; cmd2; cmd3) || (cmd4; cmd5; cmd6)

使用;

不管第一个命令cmd1是否成功运行,总是运行第二个命令cmd2: $ CD myfolder;不管CD到我的文件夹是否成功,运行Ls

使用& &

当第一个命令cmd1执行成功后,再执行第二个命令cmd2: $ CD myfolder && ls #只在CD到myfolder后运行ls

使用| |

当第一个命令cmd1执行失败时,执行第二个命令cmd2: $ CD myfolder || ls #如果CD到myfolder失败,' ls '将运行

要一次性运行它们,你可以使用管道键“|”,如下所示:

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

我发现使用;分离命令只在前台工作。例如:

cmd1;cmd2;Cmd3 & -将只在后台执行Cmd3,而 如果没有错误,cmd1 && cmd2 && cmd3 & -将在后台执行整个链。

为了满足无条件执行,使用括号解决了这个问题:

(cmd1;cmd2;Cmd3) & -将在后台执行命令链,即使任何步骤失败。

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