2016-12-19 2 views
0

これはパラメータ拡張に関する非常に基本的な質問です。可変数のパラメータコンポーネントに展開するパラメータをコード化する方法

フォーム1:

ffmpeg ... -acodec copy ... 

フォーム2:

ffmpeg ... -an ... 

私は、パラメータを表したいと思い一例として、ここではffmpegのコマンドのためのオーディオコーデックパラメータの2つの形態があります(形式1の場合)両方のシナリオで動作する1つまたは複数の変数としてのその値。この作品

param="-acodec copy" 
ffmpeg ... "$param" ... 

をも行います:

param1="-acodec" 
param2=" copy" 
ffmpeg ... "$param1$param2" 

逆に、これはフォーム2のために働くの

これは、フォーム1のために働く:

param1="-acodec" 
param2="copy" 
ffmpeg ... "$param1" "$param2" ... 

が、これは動作しません。 :

param="-an" 
ffmpeg ... "$param" ... 

、これは動作します:

param1="-an" 
param2="" 
ffmpeg ... "$param1$param2" 

が、これは明らかにあるため、余分な空白文字で動作しません:

param1="-an" 
param2="" 
ffmpeg ... "$param1" "$param2" ... 

は、パラメータの両方の形式のために働く単一の式はありますか?

答えて

1

アレイを使用してください。

# Pick one. 
# param=(-acodec copy) 
# param=(-an) 

ffmpeg ... "${param[@]}" ... 
+0

これは私の最初のテストでは完全に機能します。ありがとうございました! – scolfax

+0

自分自身のような他の初心者のために、次のようにパラメータを追加できることが分かりました(現在のffmpegの例に続きます):param + =( - vcodec libx264); param + =( - ar 48000);単一の式「$ {param [@]}」は、すべてのパラメータを適切に拡張します。非常に役に立つヒント、chepnerにもう一度感謝します。 – scolfax

関連する問題