0

我正在编写将从可移动媒体运行的脚本,但需要在执行期间卸载此媒体。它不能直接做,因为那时介质很忙。因此,我将脚本分成两部分 - 一个在卸载之前运行,它将第二个脚本部分复制到 ramfs 并启动它,第二部分是卸载 madia,执行工作,然后自删除和卸载 creted ramfs。但问题是,在 bash 中启动的异步脚本在前台启动,我不知道这个脚本如何以编程方式将自己带到前台以获取用户输入。

所以我需要这样的东西:

script1 does his job
script1 starts script2
script1 dies
script2 goes to foreground
script2 unmounts media with script1
script2 does his job
scirpt2 starting async command and dies
async command unmounts ramfs
4

1 回答 1

1

你想要wait

script1 &
JOB_SCRIPT1=$!
script2 &
JOB_SCRIPT2=$!
wait $JOB_SCRIPT1
echo "this action takes place after script1 but perhaps during script2"
wait $JOB_SCRIPT2
echo "now both jobs are complete"
async command unmounts ramfs

但是,这似乎并不完全符合您的要求。似乎有一些后台工作由script1. 这更难控制。也许尝试wait不带参数,看看是否能发现有后台进程的事实(但我很怀疑,因为它们不是同一个 shell 的一部分):

script1 &
wait
script2
async command unmounts ramfs

(这个版本中的&符号实际上不应该做任何事情,但可能会将 shell 提示为您想要的。您必须尝试一下才能看到。)

于 2015-07-29T22:10:53.903 回答