Bash在第一次出错时播放声音

时间:2014-02-11 06:09:17

标签: bash

我有一个运行一堆各种命令的bash脚本。运行需要一段时间,如果任何命令失败,我想要一个可听见的提示,所以我可以做其他事情,但一旦发生故障仍然知道。有没有办法在命令第一次失败时播放声音?

两个相关的Stack Overflow问题:

  1. 使用set -e,可以make a bash script exit on the first error。这是我目前使用的,因为它是一个非常干净的机制 - 无需检查每个命令的错误代码。如果有一种方法可以使用相当于“finally”块的方法来指定退出之前应该发生什么,那就可以了。
  2. echoing an ASCII code显然可以播放一声嘟嘟声,所以即使我只能在第一次错误时进行其中一次简单的调用。
  3. 旁注:我真的是在发出一个简单的声音 - 不需要短信/推特/发布到Instagram上。

1 个答案:

答案 0 :(得分:4)

help trap告诉我们“ERR的SIGNAL_SPEC意味着每次命令失败都会导致shell在启用-e选项时退出时执行ARG。”:

#!/bin/bash

exit_with_bells() {
    printf '\a'           # Ring terminal bell
    mplayer ~/"some.mp3"  # Play an audio file
    exit 1                # Exit with error
}

trap 'exit_with_bells' ERR

set -e
your commands here