退出带陷阱的函数及其错误代码

时间:2013-11-28 12:36:20

标签: bash function bash-trap

我们假设我有以下功能:

#!/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。我假设我没有正确捕获,但不知道如何解决它。

1 个答案:

答案 0 :(得分:3)

您必须使用exit代替return。所以这将是

trap 'printf "\nAborting\n"; exit 1' SIGINT