1

私が次の機能を持っているとしましょう:

#!/usr/bin/env bash

f(){
    trap 'printf "\nAborting\n"; return 1' SIGINT
    sleep 10
    return 0
}

実行fしてその10秒待ってから実行すると

$ echo $?
> 0

それは予想されます。しかし、実行fしてヒットするとCtrl+c、関数fは中止されますが、

$ echo $?
> 0

の代わりに1。私は適切にトラップしていないと思いますが、それを修正する方法はありません。

4

1 に答える 1

3

exitの代わりに使用する必要がありますreturn。だからこれは

trap 'printf "\nAborting\n"; exit 1' SIGINT
于 2013-11-28T12:40:08.250 に答える