当信号设置为“DEBUG”假信号时,为什么我的陷阱不起作用?

时间:2012-07-01 07:19:16

标签: linux debugging bash shell ubuntu

#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”假信号时,我的陷阱不起作用,但报告陷阱错误?

1 个答案:

答案 0 :(得分:8)

错误消息“坏陷阱”是由灰而不是bash产生的。当你运行sh test.sh时,shebang行是无关紧要的,因为你没有执行脚本,你正在执行名为“sh”的程序,其中“test.sh”作为参数。 sh程序(在你的情况下是灰烬或破折号的符号链接,我打赌)然后尽力运行参数中命名的脚本。如果您运行命令./test.sh(它首先需要+ x权限),shebang线将会起作用。