NES*_*NES 21
有几种不同的方式,即:
使用 -x 选项运行脚本
bash -x yourscript.sh
Run Code Online (Sandbox Code Playgroud)set -x在 Shebang 之后#!/bin/bash和脚本开始之前在脚本文件的开头添加一个新行,set -v将显示 shell 输入行,set -x显示执行的命令和参数
将脚本文件的shebang替换为 #!/bin/bash -xv
dan*_*max 20
您还可以在执行时使用set -x和set -v。更多信息:
http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/debugging.html http://www.cyberciti.biz/tips/debugging-shell-script.html
祝你好运!
您可以使用这个小功能进入“控制台”:
function debug
{
echo "#############| Entering DEBUG mode |####################";
cmd=""
while [[ $cmd != "exit" ]]; do
read -p "> " cmd
case "$cmd" in
vars ) ( set -o posix ; set );;
exit ) ;;
* ) eval "$cmd";;
esac
done
echo "#############| End of DEBUG mode |####################";
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的脚本中(示例):
for file in *; do
...
if [[ $file == "strange_case.txt" ]]; then
# break the code here to analyze:
debug
fi
...
done
Run Code Online (Sandbox Code Playgroud)
它将接受任何命令,保持局部变量不变。要退出“调试”模式,请键入“exit”(它不会退出脚本),它将继续执行代码。如果在循环中使用“调试”,则每次都会停止。您可以将其包装在“if”中(如上例所示),或创建一个“watch”函数:
function debug_watch
{
if [[ $1 == $2 ]]; then
debug
fi
}
# And Use it:
debug_watch "$file" "strange_case.txt"
Run Code Online (Sandbox Code Playgroud)
我还添加了“vars”命令,它将转储所有可用的变量及其值。您也可以添加自己的自定义命令。
我在几分钟内完成了代码,因此请自担风险使用它。请注意,在调试模式下可以执行任何命令,因此如果将其留在生产脚本中会带来安全风险。