Bash 脚本:记录产生错误的命令?

Bash scripting: log commands that produced errors?

我正在研究 bash 脚本的最佳实践。在每个文件的顶部,我放置了以下内容,以便在任何命令产生错误时退出:

set -o errexit

问题是它对调试没有帮助。我正在寻找一种方法来记录失败的命令(即 运行 的命令和参数),以及错误发生在哪一行以及哪个文件中。

这样做的好方法是什么?例如,通过每个 bash 脚本顶部的一小组命令?也许有一个用于所有脚本的中央文件来记录此类错误?这些命令可能是什么?

此外,将它放在每个需要它的脚本中是个好主意吗?或者应该将带有它的单个文件 source' 放入每个需要它的脚本中?或者也许有不同的方法?

你有几个选择:

  • 在 script.sh 文件的顶部使用:#!/bin/bash -x
  • 在script.sh
  • 中使用set -x选项
  • 从命令行使用 -x:bash -x script.sh