我有一个 while 循环来数到 5 并在完成时回显“完成”。我希望能够使用“&”在后台执行脚本,并在运行时继续发出命令。
但是当它完成后,我希望它在回显“完成”之前使其自身成为前台进程。之后,我希望它会显示一个新的命令提示符行。我可以只回显“\nDone”,并且我理解为什么在后台运行它只会打印输出而不是结束/开始新的提示。但我想知道是否有可能在结束之前基本上将“合并作业”重新组合在一起,以及我是否可以在脚本中使用内置作业控制将其应用到其他地方。
这不是一个实际问题,只是好奇。
i=0
while [ $i -lt 5 ]
do
let i+=1
sleep 1
done
fg
echo "Done"
答案1
不 - 正在运行的进程不能执行此类操作,因为它们由 shell 后台运行,并且 shell 的工作是确定哪个进程是前台/后台/挂起的。
试试这个 - 删除fg
,然后在后台运行 shell 脚本(即&末尾带有 a )。完成后,输出将模糊地显示到您的控制台。