Han*_*sky 0 linux debugging bash
我在bash脚本中使用以下代码来跟踪代码
#!/bin/bash
function trace()
{
echo "TRACE" \
"${BASH_SOURCE[1]}:${BASH_LINENO[0]}:${FUNCNAME[1]}:" \
"$BASH_COMMAND"
}
set -o functrace
shopt -s extdebug
trap trace DEBUG
# Remainder of code here
exit 0
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,它会吃掉我的变量.一些线索?
以下是一些建议:
set -xv来帮助您调试shell脚本.只需将其放在set -xv要调试的部件之前,set +xv然后关闭调试.您还可以使用export PS4="\$LINENO> "在shell脚本中打印行号.以下是您的脚本的外观set -xv.这是调试shell脚本的一个非常好的工具.
最好的方法是使用set -xv.在set -v执行前,将呼应一行.在set -x将输出的shell脚本之后的行内插在该行的变量和表达式.
作为其中的一部分,您还可以创建一个环境变量PS4,该变量将在每次shell脚本输出正在执行的行时打印.大多数人将它设置为类似的东西PS="\$LINENO: "将打印出正在执行的行的行号.
完成后,您可以通过设置关闭调试set +xv.
#
# Somewhere in this part of my script, I am having problems....
#
export PS4="\$LINENO> " # Now, I'll see the line numbers while debugging
set -xv # Debugging is turned on
....
#
# Done with debugging
#
set +xv # Debugging is turned off
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1304 次 |
| 最近记录: |