我有一个运行一堆各种命令的bash脚本。运行需要一段时间,如果任何命令失败,我想要一个可听见的提示,所以我可以做其他事情,但一旦发生故障仍然知道。有没有办法在命令第一次失败时播放声音?
两个相关的Stack Overflow问题:
set -e
,可以make a bash script exit on the first error。这是我目前使用的,因为它是一个非常干净的机制 - 无需检查每个命令的错误代码。如果有一种方法可以使用相当于“finally”块的方法来指定退出之前应该发生什么,那就可以了。旁注:我真的是在发出一个简单的声音 - 不需要短信/推特/发布到Instagram上。
答案 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