【问题标题】:Source, but run a command after every command来源,但在每个命令之后运行一个命令
【发布时间】: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 在脚本的顶部

标签: bash shell xargs


【解决方案1】:

使用最新版本的 bash?

trap 'echo -----' debug 放在源文件的顶部,也可以将trap -- debug 放在底部。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2013-08-13
    相关资源
    最近更新 更多