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