如何在后台等待?

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 '&&'

注意:重要的是我想在后台等待而不是等待某些后台作业完成

l0b*_*0b0 6

语法错误是因为 和&都是&&命令分隔符。&在后台启动命令并立即运行下一个命令,同时&&运行第一个命令,等待它完成,如果第一个命令成功则运行第二个命令。

要将您想要与第三个事物异步运行的两个事物作为背景,请使用以下模式:

( first_thing && second_thing ) &
third_thing
Run Code Online (Sandbox Code Playgroud)

可以选择在完成前两项wait $! 之后再继续。 third_thing

wait 1等待 PID 1 完成,这在 shell 运行时不太可能发生。您需要wait %1,它等待作业规范1。