【发布时间】:2020-11-20 10:54:43
【问题描述】:
理论问题。有人可以解释一下为什么jobs 已经完成后继续返回Done 吗?
root@test:~# cat 1.sh
#!/bin/bash
sleep 5 &
while true; do
echo $(jobs) && sleep 1
done
root@test:~# ./1.sh
[1]+ Running sleep 5 &
[1]+ Running sleep 5 &
[1]+ Running sleep 5 &
[1]+ Running sleep 5 &
[1]+ Running sleep 5 &
[1]+ Done sleep 5
[1]+ Done sleep 5
[1]+ Done sleep 5
[1]+ Done sleep 5
^C
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)
【问题讨论】:
-
因为
while true永远不会退出,除非您在工作完成或达到某种超时限制时自己exit。 -
问题不在于退出脚本,而在于
$(jobs)一直返回Done