使用行号调试shell脚本

taw*_*eed 6 unix linux shell

我继承了700多行shell脚本,注意到当我运行脚本时,它会在某个执行点吐出错误.

例如,我在控制台上看到的错误是这样的

cat: /Wreck/wreck_module.rb: No such file or directory 
Run Code Online (Sandbox Code Playgroud)

我试图使用set -x链接中的大部分提示,但是我注意到我得到的所有输出都非常嘈杂.

有没有办法获得shell命令返回非零状态的确切行号?

per*_*eal 4

将其放在要调试的脚本的顶部:

#!/bin/bash
function trace_line(){
  caller
}
trap trace_line debug
Run Code Online (Sandbox Code Playgroud)

也许可以将输出重定向到文件以便于分析。