【发布时间】:2021-09-14 21:10:20
【问题描述】:
我在一个文件中有一个 shell 命令列表,每行总是 1 个命令。我用source cmds.sh 运行这些,一切都很好。
这些命令通常执行一些任务并打印输出。但是,很难判断一个命令的输出在哪里结束,而另一个命令的输出从哪里开始。如果我可以在每个来源命令之后运行echo "-----" 之类的东西,那就容易多了。
我怎样才能以简洁的方式做到这一点?
【问题讨论】:
-
你可以把
set -v放在脚本的前面,这使得bash在运行之前打印出每个命令。 -
如果你不介意启动另一个 shell,你可以通过 bash -
sed 's/$/;echo ------/' cmd.sh | bash -
DEBUG陷阱是显而易见的方法。 -
或者使用
PS4——这不仅是一个分隔符,你还可以输入代码来自的行号 -
即:
PS4=':$LINENO+'; set -x在脚本的顶部