【问题标题】:I have some bash scripts. How to store the success or failure of their output into a file?我有一些 bash 脚本。如何将其输出的成功或失败存储到文件中?
【发布时间】:2021-06-04 19:20:28
【问题描述】:

所以我想知道如何在每个脚本中编写某种命令,如果脚本成功与否将输出并将其附加到文件中。有可能吗?

【问题讨论】:

  • 您几乎可以肯定不应该在脚本中这样做。相反,让调用者附加到状态文件。更好的是,根本不要这样做。古往今来的圣人建议(这常常被忽视):“悄悄地成功,大声地失败”。如果脚本成功,则根本不产生任何输出。
  • 只想拥有一个日志文件,我可以在其中了解所有已运行脚本的状态。所以以后可以参考一下。

标签: linux bash scripting


【解决方案1】:

您可以通过使用trap 来实现这一点 - https://www.linuxjournal.com/content/bash-trap-command

在你的 bash 文件中添加这个命令

# add these lines at the top of your bash script
echo success > your_output_file
trap 'echo failed > your_output_file' ERR

【讨论】:

  • 这是一种合理的方法,但 OP 希望附加多个脚本。使用这种方法,只会看到最后一个要运行的脚本的状态。或许可以改为:trap 'if test $? = 0; then s=success; else s=failure; fi; printf "%s\n" "$s: $$: $0" >> file' 0
  • 这是很好的观察。但我认为 OP 想知道脚本是否在任何命令中失败(假设 -e 被禁用)。在那种情况下,ERR 会比 EXIT(0) 好
  • 也许捕获 ERR 更合适(我同意程序成功时不应给出任何输出),但 OP 想要生成 success 消息。我要说明的关键点是退出值在 EXIT 的陷阱中可用。
【解决方案2】:

您可以对文件使用标准错误和标准输出。例如

echo standard output >> standard_file
echo standard error 2>> standard_error

【讨论】:

    猜你喜欢
    • 2013-11-17
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2021-07-04
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多