如何逐行执行bash脚本?

Rod*_*igo 80 bash

如果我输入bash -x选项,它将显示所有行.但脚本将执行正常.

我该如何逐行执行?我可以看到它是否做了正确的事情,或者我中止并修复了这个bug.read每一行都有相同的效果.

org*_*hup 111

你不需要在每行中添加一个读取,只需在你的bash脚本中添加如下的陷阱,它就会产生你想要的效果,例如.

#!/usr/bin/env bash
set -x
trap read debug

< YOUR CODE HERE >
Run Code Online (Sandbox Code Playgroud)

Works,只是用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 >
Run Code Online (Sandbox Code Playgroud)

要停止脚本,在这种情况下,您必须从另一个shell删除它.


ALTERNATIVE1

如果您只想等待几秒钟,然后再继续执行脚本中的下一个命令,则以下示例可能对您有用.

#!/usr/bin/env bash
trap "set +x; sleep 5; set -x" DEBUG

< YOUR CODE HERE >
Run Code Online (Sandbox Code Playgroud)

我在trap命令中添加set + x和set -x以使输出更具可读性.

  • 你怎么让它停下来?在我逐步完成脚本之后,shell就像脚本仍在运行一样. (3认同)
  • 那么如何进入下一行(运行下一个命令)? (2认同)
  • 它捕获每个命令的读取.您需要做的只是按返回以进入下一个命令 (2认同)

小智 15

也许BASH调试器适合您.

  • 这确实是最好的解决方案.它允许在运行之前查看该行(以及更多).在大多数系统上,它可以使用`apt-get install bashdb`进行安装.然后你只需要运行`bashdb your_command.sh`,输入`step`,然后点击回车符. (2认同)