我有一個腳本如下:
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
使用 shell 變數。 「不重複自己」是 shell 變數的主要用例之一:
#!/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
筆記:
您的腳本不包含舍邦。在這種情況下解釋器取決於您呼叫腳本的 shell。一般來說,省略 shebang 並不是一個好主意。我添加的
#!/bin/sh
原因有兩個:- 展示 Shebang 的樣子;
- 表明 shell 變數是在 中工作的一個非常基本的概念
sh
,因此您可以期望相同的程式碼在任何嘗試與 POSIX 相容的 shell 中運作。
- 引用很重要。