我们假设我有以下功能:
#!/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
。我假设我没有正确捕获,但不知道如何解决它。
答案 0 :(得分:3)
您必须使用exit
代替return
。所以这将是
trap 'printf "\nAborting\n"; exit 1' SIGINT