我是shell脚本的新手,我正在试图弄清楚如何终止在另一个函数中使用无限循环的函数。 代码或多或少看起来像这样:
finish=1
function1() {
function2&
...
finish=0
}
function2() {
while [ $finish==1 ]
do
...
done
}
脚本的主要部分只调用function1。当function1完成时,有没有其他方法来终止function2?我也尝试用id杀死它,但无法使它工作。
答案 0 :(得分:4)
bash中的函数调用将在子shell中执行。您可以存储该子shell的pid并在function1退出之前将其终止。像这样:
function1() {
function2&
pid=$!
...
kill "$pid"
}
function2() {
while true
do
...
done
}