2014-02-11 40 views
1

我有一個bash腳本,它運行一堆各種命令。它需要一段時間才能運行,如果有任何命令失敗,我會想要一個可聽的提示,所以我可以做其他事情,但只要發生故障就會知道。第一次命令失敗時有沒有辦法播放聲音?Bash在第一個錯誤上播放聲音

兩個相關堆棧溢出的問題:

  1. 通過使用set -e,有可能make a bash script exit on the first error。這是我目前使用的,因爲它是一個非常乾淨的機制 - 不需要檢查每個命令的錯誤代碼。如果有一種方法可以使用這個方法,可以使用相當於「finally」塊的方式,我可以指定在退出之前應該發生什麼,這是行得通的。
  2. 嘟嘟聲明顯可以通過echoing an ASCII code播放,所以即使我只是能夠對第一個錯誤進行這些簡單調用之一。

附註:我真的是在一個簡單的聲音 - 無需短信/推文/發佈到Instagram。

回答

4

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