# optional cropping
if [ "$1" == "cropit" ]; then
ITS_CROP_TIME=
mkdir cropped; for i in *.mp4; do ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"
rm -r *.mp4
cd cropped
cp -r *.mp4 ../
fi
# optional cropping
이런 방식으로 문자열을 사용할 수 있습니까 ITS_CROP_TIME=
(아래 코드의 출력을 캡처하기 위해)? 이제 이 변수를 스크립트 어딘가에 배치하면 변수 정의에서 명령이 실행됩니까?
이건 어때? 이것이 작동할까요?
if [ "$1" == "cropit" ]; then
ITS_CROP_TIME=mkdir cropped; for i in *.mp4; do ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"; rm -r *.mp4; cd cropped; cp -r *.mp4 ../
fi
답변1
#!/bin/bash
set -e
if [ "$1" == "cropit" ]; then
ITS_CROP_TIME="$(
mkdir cropped;
for i in *.mp4; do
ffmpeg -i "$i" -filter:v "crop=1920:980:0:-100" cropped/"${i%.*}.mp4"
done
rm -r ./*.mp4
cd cropped
cp -r ./*.mp4 ../
)"
fi
답변2
ITS_CROP_TIME
나중에 실행할 명령 모음에 변수를 설정하고 싶다고 가정합니까 ?
이 기능의 목적은 다음과 같습니다.
crop_all_in_dir () {
local source_dir="$1"
local dest_dir="$2"
mkdir -p "$dest_dir"
for file in "$source_dir"/*.mp4; do
[ ! -f "$file" ] && continue
ffmpeg -i "$file" -filter:v "crop=1920:980:0:-100" "$dest_dir/(basename "${file%.*}").mp4"
done
}
그런 다음 나중에 스크립트에서 호출할 수 있습니다.
# optional cropping
if [ "$1" = "cropit" ]; then
crop_all_in_dir . cropped
fi
즉, *.mp4
현재 디렉터리의 모든 파일을 자르고 잘린 파일을 해당 cropped
디렉터리(현재 디렉터리의 하위 디렉터리)에 배치하거나 출력 디렉터리가 아직 없는 경우 생성합니다.
이 함수는 비파괴적인 방식으로 자르기를 수행하므로 cp
원본 파일(사용자 파일 등)의 교체는 함수 외부에서 수행됩니다.