【问题标题】:Bash script: Turn on errors?Bash 脚本:打开错误?
【发布时间】:2023-12-01 18:24:01
【问题描述】:

在我的 Ubuntu 引擎上设计了一个简单的基于 shell/bash 的备份脚本并使其工作后,我已将它上传到我的 Debian 服务器,它在执行它时会输出一些错误。

如何在我的 Ubuntu 机器中打开“错误处理”以使其更易于调试?

【问题讨论】:

    标签: bash shell ubuntu debian


    【解决方案1】:
    • ssh 进入服务器
    • 使用 -v-x 或两者手动运行脚本
    • 尝试在终端窗口中复制错误运行的用户、组和环境
      如有必要,使用类似“su -c 'sh -v script' otheruser”之类的内容运行程序

    您可能还希望将错误命令的结果(特别是如果由cron(8) 运行)传送到/bin/logger,可能类似于:

    sh -v -x badscript 2>&1 | /bin/logger -t badscript
    

    然后去看看 /var/log/messages。

    【讨论】:

      【解决方案2】:

      Bash 允许您有选择地或完全使用set 命令打开调试。这是关于如何调试 bash 脚本的good reference

      命令set -x 将打开脚本中任何位置的调试。同样,set +x 将再次将其关闭。如果您只想查看部分脚本的调试输出,这很有用。

      【讨论】:

        【解决方案3】:

        更改您的 shebang 行以包含跟踪选项:

        #!/bin/bash -x
        

        您也可以让 Bash 在不运行文件的情况下扫描文件以查找错误:

        $ bash -n scriptname
        

        【讨论】:

        • @Industrial:如果我知道具体的错误消息是什么,我会更有帮助。