如何逐行执行bash脚本?

如果我inputbash -x选项,它将显示所有行。 但脚本将正常执行。

我怎样才能一行一行地执行? 比我可以看到,如果它做的是正确的事情,或者我中止并修复错误。 同样的效果是把每一行read

你不需要在everyline中读取一个读数,只需要在你的bash脚本中添加一个类似下面的陷阱,就可以得到你想要的效果,例如。

 #!/usr/bin/env bash set -x trap read debug < YOUR CODE HERE > 

工程,只testing了bash v4.2.8和v3.2.25。


改良版

如果您的脚本正在从文件中读取内容,则上述列表将不起作用。 解决方法可能看起来像下面的示例。

 #!/usr/bin/env bash echo "Press CTRL+C to proceed." trap "pkill -f 'sleep 1h'" INT trap "set +x ; sleep 1h ; set -x" DEBUG < YOUR CODE HERE > 

在这种情况下,要停止脚本,必须从另一个shell中将终止。


ALTERNATIVE1

如果您只想等待几秒钟,然后继续执行脚本中的下一个命令,那么以下示例可能适用于您。

 #!/usr/bin/env bash trap "set +x; sleep 5; set -x" DEBUG < YOUR CODE HERE > 

我在trap命令中添加set + x并设置-x,以使输出更具可读性。

也许BASHdebugging器是适合你的。

看看bash-stepping-xtrace 。

它允许步进xtrace。