在Linux shell上的另一个函数内终止函数

时间:2015-11-08 18:07:37

标签: linux bash shell

我是shell脚本的新手,我正在试图弄清楚如何终止在另一个函数中使用无限循环的函数。 代码或多或少看起来像这样:

finish=1

function1() {
    function2&
    ...
    finish=0
}
function2() {
    while [ $finish==1 ] 
    do
    ...
    done
}

脚本的主要部分只调用function1。当function1完成时,有没有其他方法来终止function2?我也尝试用id杀死它,但无法使它工作。

1 个答案:

答案 0 :(得分:4)

bash中的函数调用将在子shell中执行。您可以存储该子shell的pid并在function1退出之前将其终止。像这样:

function1() {
    function2&
    pid=$!

    ...

    kill "$pid"
}

function2() {
    while true 
    do
        ...
    done
}