發表文章

目前顯示的是有「函式」標籤的文章

影音數位典藏所需的自動化腳本(Bash Script)--函式

影音數位典藏所需的自動化腳本(Bash Script)--函式     在撰寫腳本和程式時,有時候會過到相同的工作會同時出現在不同階段的狀況,例如顯示提示或錯誤訊息。此時,「函式 ( 或稱函數,子程式,function/subroutine)」就是一個好用的工具。如果同樣的功能會在不同腳本中都會用到,例如判斷輸入檔案,也可以寫成函式。在撰寫新的腳本中,可以直接將整個函式整個搬過去,就不用再寫一次了。如果常用的函式累積得夠多,還可以直接整理到一個檔案中,做成函式庫。直接透過引用 (source) 來呼叫函,連複製的動作都可以省略。 函式的完整表示方式為: function   fname () {     command } 其中 fname 就是未來要做成執行指令的名稱,而 command 就是這段指令預期執行的內容。與一般程式寫法不同,腳本有嚴格的前後順序。因此在腳本中的所有函式必需放在主程式段之前,否則會有無法找到函式的問題。 利用函式撰寫產生 MD5 的腳本     前面寫過產生影音檔 metadata 的腳本,相同的架構可以很外的修改成產生以畫格為基礎的 md5 集的功能,只要將最後產生 json 的指令更改如下即可: ffmpeg -i "${input_file}" -f framemd5 "${filename}" 但這樣的腳本中有許多部份可以拆成下列幾個部份: 顯示錯誤訊息 顯示操作說明 讀取目標 判斷目標是否為影音檔 執行主要指令 顯示錯誤訊息 # display an error message and exit function prompt_error() {     echo "Error: ${1:-Unknown Error.}"     exit 1 } 建立一個名為 prompt_error 的函式,這個函式的工作是顯示 "Error: 錯誤訊息"。 因此在後續的指令中,需要顯示錯誤訊息的地方,只要寫成 「prompt_error "錯誤訊息"」 即可。「${1:-Unknown Error.} 」這個寫法代表,應出現在指令後方 (位置 $1 )