you*_*hao 3 linux shell process shell-script background-process
我有两个后台作业,作业 ID 为 1 和 2。我想在作业 1 完成后做一些事情,但我不想挂起。
目前我得到的是wait 1 && do whatever
,但是这个命令它会自动阻止当前的 shell。我想让wait
它自己运行后台。我wait 1 & && do whatever
在 zsh 中尝试过,但不起作用。我收到一个错误zsh: parse error near '&&'
:
注意:重要的是我想在后台等待而不是等待某些后台作业完成。
语法错误是因为 和&
都是&&
命令分隔符。&
在后台启动命令并立即运行下一个命令,同时&&
运行第一个命令,等待它完成,如果第一个命令成功则运行第二个命令。
要将您想要与第三个事物异步运行的两个事物作为背景,请使用以下模式:
( first_thing && second_thing ) &
third_thing
Run Code Online (Sandbox Code Playgroud)
可以选择在完成前两项wait $!
之后再继续。 third_thing
wait 1
等待 PID 1 完成,这在 shell 运行时不太可能发生。您需要wait %1
,它等待作业规范1。