我有一个如下的脚本:
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
有两个原因:- 展示事物的样子;
- 表示 shell 变量是一个相当基本的概念,可以在 中工作
sh
,因此您可以期望相同的代码在任何尝试符合 POSIX 标准的 shell 中工作。
- 引用很重要。