我有一个运行一堆各种命令的bash脚本。 运行需要一段时间,如果任何命令失败,我希望得到声音提示,所以我可以做其他事情,但一旦发生故障,我仍然知道。 有没有办法在命令第一次失败时播放声音?
两个相关的堆栈溢出问题:
- 通过使用
set -e
,可以在第一个错误时使 bash 脚本退出。 这是我目前正在使用的机制,因为它是一种非常干净的机制 - 无需检查每个命令上的错误代码。 如果有一种方法可以将其与等效的"最终"块一起使用,我可以在其中指定退出前应该发生什么,那将起作用。 - 哔哔声显然可以通过回显 ASCII 代码来播放,因此即使我只能在第一次错误时进行这些简单的调用之一。
旁注:我真的在追求一个简单的声音 - 无需短信/推文/发布到Instagram。
help trap
告诉我们"ERR 的SIGNAL_SPEC意味着每次命令失败时执行 ARG 会导致 shell 在启用 -e 选项时退出。
#!/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