2015-09-20 51 views
1

我有一個使用ffmpeg的bash腳本。我希望能夠通過我的腳本一個參數,如果設置了這個參數,那麼我的腳本中的ffmpeg命令會添加一個參數。我可以以編程方式在bash腳本中包含參數嗎?

在它是最基本的,這就是我想要做的事:

ffmpeg \ 
# if duration flag is set for my script # 
-t $DURATION \ 
# end if # 
-rest of ffmpeg parameters... 

我知道我可以包裹在if整個事情,但ffmpeg的命令有很多其它參數的那會那麼需要在兩個地方保持更新。

這可能嗎?

回答

1

你可以使用一個數組來存儲動態參數:

if [ some test ] 
then 
    args+=(-t "$DURATION") 
fi 

ffmpeg "${args[@]}" -rest of ffmpeg parameters... 

你也可以使用,而不是在數組中的不帶引號的變量這種情況下,但這不會與空白或glob字符吵架。

2

更換

-t $DURATION \ 

通過

$([[ -n "$DURATION" ]] && echo -- "-t $DURATION") \ 
+0

謝謝,這看起來像我以後,但只是爲了讓我明白,這裏發生了什麼?我還沒有見過雙方括號,-n或echo - 之前(很新的bash) – GusRuss89

+0

'[[...]]':根據條件表達式的評估返回true或false的狀態' -n「$ DURATION」'。如果字符串不爲空,'-n STRING'返回true。請參閱:'help [['和'help test' – Cyrus

相關問題