如何用一条命令在后台运行多个程序?
我已尝试过以下命令,但它们不起作用。
nohup ./script1.sh & && nohup ./script2.sh &
-bash: syntax error near unexpected token '&&'
nohup ./script1.sh & ; nohup ./script2.sh &
-bash: syntax error near unexpected token ';'
答案1
从 shell 语法的角度来看,分隔像/ / ...&
这样的命令(尽管当然具有不同的语义)。所以这只是:;
|
&&
cmd1 & cmd2 & cmd3 &
答案2
bash 联机帮助页部分标题为复合命令有两个可用的选项:列表命令和分组命令。
组命令是一系列用大括号括起来的命令{}
。列表是相同的,用括号括起来()
。两者都可用于将多个命令设置为背景,最后将整个集合作为一个集合设置为背景。列表构造在子 shell 中执行命令,因此不会保留变量分配。
执行一组命令:
{ command1 & command2 & } &
您还可以在列表(子 shell)中执行命令:
( command1 & command2 ) &
答案3
其他方式:
$(command1 &) && command2 &