次のようなスクリプトがあります:
ffmpeg -i input.mp4 -stabilization-pass-1-stuff && \
ffmpeg -i input.mp4 -b:v xxxxk -stabilization-pass-2-h264-pass-1-stuff && \
ffmpeg -i input.mp4 -b:v xxxxk -h264-pass-2-output-stuff output.mp4
スクリプトの始めに input.mp4 とビットレート xxxxk を一度提供するようにスクリプトを書き直すにはどうすればよいですか?
答え1
シェル変数を使用します。「同じことを繰り返さない」ことは、シェル変数の主な使用例の 1 つです。
#!/bin/sh
file='input.mp4'
bitrate='xxxxk'
ffmpeg -i "$file" -stabilization-pass-1-stuff &&
ffmpeg -i "$file" -b:v "$bitrate" -stabilization-pass-2-h264-pass-1-stuff &&
ffmpeg -i "$file" -b:v "$bitrate" -h264-pass-2-output-stuff output.mp4
ノート:
スクリプトにシバン。 このような場合にはインタプリタはスクリプトを呼び出すシェルに依存します一般的に、シェバンを省略するのは得策ではありません。私が追加した
#!/bin/sh
理由は 2 つあります。- シバンがどのように見えるかを示す;
- シェル変数は で機能する非常に基本的な概念であることを示しています
sh
。そのため、POSIX 準拠を試みるどのシェルでも同じコードが機能すると期待できます。
- 引用は重要。