다음과 같은 스크립트가 있습니다.
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
쉘 변수를 사용합니다. "자신을 반복하지 않음"은 쉘 변수의 주요 사용 사례 중 하나입니다.
#!/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
노트:
스크립트에 다음이 포함되어 있지 않습니다.오두막. 그러한 경우인터프리터는 스크립트를 호출하는 쉘에 따라 다릅니다.. 일반적으로 shebang을 생략하는 것은 좋은 생각이 아닙니다. 나는
#!/bin/sh
두 가지 이유로 추가했습니다.- Shebang이 어떻게 생겼는지 보여주기 위해;
- 셸 변수는 에서 작동하는 매우 기본적인 개념이므로
sh
POSIX 호환을 시도하는 모든 셸에서 동일한 코드가 작동할 것으로 기대할 수 있습니다.
- 인용이 중요하다.