4
#test code:

#!/bin/bash
#~/test/test.sh
trap "echo 'testmessage'" DEBUG

while :
do
echo abc
sleep 6
done

#run it
~/test$sh test.sh

===============================

#result
=>   trap: DEBUG: bad trap  

===============================

?[shell debug]为什么当信号设置为“DEBUG”假信号时我的trap不工作,但报trap错误?

4

1 回答 1

11

错误消息“bad trap”是由 ash 而不是 bash 产生的。当你运行sh test.shshebang 行时是无关紧要的,因为你没有执行脚本,你正在执行名为“sh”的程序,并以“test.sh”作为参数。sh 程序(在你的情况下是 ash 或 dash 的符号链接,我敢打赌)然后尽最大努力运行参数中命名的脚本。如果您运行命令,shebang 行将发挥作用./test.sh(首先需要 +x 权限)。

于 2012-07-01T07:38:26.540 回答