如何使用单个命令在后台运行多个程序?

Rah*_*til 35 bash shell-script

如何使用单个命令在后台运行多个程序?

我已经尝试了下面的命令,但它们不起作用。

nohup ./script1.sh & && nohup ./script2.sh &
-bash: syntax error near unexpected token '&&'

nohup ./script1.sh & ; nohup ./script2.sh &
-bash: syntax error near unexpected token ';'
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 31

从 shell 语法的角度来看,&;/ |/ &&...等命令分开(当然语义不同)。所以它只是:

cmd1 & cmd2 & cmd3 &
Run Code Online (Sandbox Code Playgroud)


Eli*_*ady 12

题为“复合命令”的 bash 手册页部分有两个可用的选项,即列出命令和分组命令。

组命令是括在花括号中的一系列命令{}。列表是相同的,用括号括起来()。两者都可以用于将多个命令作为背景,最后将整个集合作为一个集合作为背景。list 构造在子 shell 中执行命令,因此不会保留变量分配。

执行一组命令:

{ command1 & command2 & } &
Run Code Online (Sandbox Code Playgroud)

您还可以在列表(子shell)中执行您的命令:

( command1 & command2 ) &
Run Code Online (Sandbox Code Playgroud)