为什么bash在脚本退出后发送调试信号?
我正在学习bash的调试信号 以下是我重新生成问题现象的测试代码。所以它没有太多意义。请不要在意细节。 它准备了两个陷阱,一个是由退出信号调用的,用于最初清理时态脚本,但在这里它是一个伪函数。第二个由调试信号调用,以计算调试器正在扫描的行。 我的问题是,调试信号可能会在LINENO=0的clean\u up\u调试器中显示。为什么当时的行号是0?在bash-x的输出之后,我添加了问题的细节。请告诉我为什么会这样。 多谢各位为什么bash在脚本退出后发送调试信号?,bash,Bash,我正在学习bash的调试信号 以下是我重新生成问题现象的测试代码。所以它没有太多意义。请不要在意细节。 它准备了两个陷阱,一个是由退出信号调用的,用于最初清理时态脚本,但在这里它是一个伪函数。第二个由调试信号调用,以计算调试器正在扫描的行。 我的问题是,调试信号可能会在LINENO=0的clean\u up\u调试器中显示。为什么当时的行号是0?在bash-x的输出之后,我添加了问题的细节。请告诉我为什么会这样。 多谢各位 #!/bin/bash # file name is debug.wor
#!/bin/bash
# file name is debug.working
source "bash_debugger_functions.sh"
trap clean_up_debugger_func EXIT
no_of_line_until_here=${LINENO} # *** no_of_line_until_here is 12 ***
trap "show_line_scanned \$(( \${LINENO} - ${no_of_line_until_here} - 1 ))" DEBUG
#!/bin/bash
echo "echo_sring = $1"
下面是一个库文件
#!/bin/bash
# file name is 'bash_debugger_functions.sh'
clean_up_debugger_func() {
echo "dummy"
}
show_line_scanned() {
echo "At line $1"
}
下面是bash-x debug.working输出的一部分
+ (debug.working:17): echo 'echo_sring = test_message'
++ (debug.working:1): show_line_scanned -12
在调用“echo'echo\u sring=test\u message'”之后,使用负值-12调用show\u line\u scanned。直到这里的_等于+12,才有_行的_。所以当时LINENO似乎是0。我不知道为什么在这里调用show_line_scanned,因为我假设调试信号在每一行被调度,但在“echo”echo_sring=$1”之后没有新行。我想知道为什么LINENO在这里是0。
请教我这里的机械装置
我假设调试信号在每一行被调度,但在“echo”echo\u sring=$1”之后没有新行
仍然有一行在debug.working
脚本的最后一行之后执行,因为您设置了trap clean\u debugger\u func EXIT
命令,对于该clean\u debugger\u func
命令,您会得到令您困惑的调试命令分派
我想知道为什么LINENO在这里是0
此时脚本的执行刚刚结束,manbash
说明了LINENO
:
当不在
脚本或函数,替换的值不保证
要有意义
我假设调试信号在每一行被调度,但在“echo”echo\u sring=$1”之后没有新行
仍然有一行在debug.working
脚本的最后一行之后执行,因为您设置了trap clean\u debugger\u func EXIT
命令,对于该clean\u debugger\u func
命令,您会得到令您困惑的调试命令分派
我想知道为什么LINENO在这里是0
此时脚本的执行刚刚结束,manbash
说明了LINENO
:
当不在
脚本或函数,替换的值不保证
要有意义