Я пытаюсь создать простой скрипт bash для команды, поэтому я могу сделать его многоразовым для меня, команда была взята из другого сообщения, чтобы конвертировать видео с помощью ffmpeg, а затем загрузить.Parsing Values To Shell Bash Script
Вот что у меня есть.
#!/bin/bash
MOVIES=$1
EXT=$2
BUCKET=$3
find "$MOVIES" -name "*.$EXT" -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 22 -c:a libfaac -movflags faststart "${0%%.mov}.mp4" && s3cmd put "${0%%.mov}.mp4" "$BUCKET""$(basename "${0%%.mov}.mp4")"' {} \;
exit;
У меня возникают проблемы с третьим var, если я запускаю его так.
sh batch.sh ~/Documents/screengrabs/ mov s3://bucket/
Я получаю сообщение об ошибке, которое он кодирует правильно.
ERROR: Parameter problem: Destination must be S3Uri. Got: file://49A22352-9F41-48B9-BF97-610CBF699025-630-0000055828D0D55F.mp4
Это означает, что он не разбирает параметр $ 3 $ BUCKET должным образом.
Любая помощь - это моя первая попытка сценария bash.
Благодаря
Обновление до сих пор не работает
#!/bin/bash
MOVIES="$1"
EXT="$2"
BUCKET="$3"
find "$MOVIES" -name "*.${EXT}" -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 22 -c:a libfaac -movflags faststart "${0%%.mov}.mp4" && s3cmd put "${0%%.mov}.mp4" "${BUCKET}/sam.mp4"' {} \;
exit;
РАБОТА
#!/bin/bash
MOVIES=$1
EXT=$2
export BUCKET=$3
find "$MOVIES" -name "*.$EXT" -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 22 -c:a libfaac -movflags faststart "${0%%.mov}.mp4" && s3cmd put "${0%%.mov}.mp4" "$BUCKET""$(basename "${0%%.mov}.mp4")"' {} \;
exit;
Я думаю, что использование переменных MOVIES, EXT, BUCKET типа «*. $ {EXT}», «$ {BUCKET}» будет работать вместо $ BUCKET, $ EXT. –
ok спасибо, плохой дайте это;) – user1503606
По-прежнему не повезло, если я жесткий код s3: // bucket/вместо этого в опции $ {BUCKET} он работает – user1503606