Следующая головоломка: я написал сценарий bash с простой задачей извлечения mp3-файлов без файлов mp4. Идея этого первого проекта состоит в том, чтобы просто использоватьBash скрипт сгенерировал команду, действующую на консоли, но не в скрипте
avconv -i input.mp4 output.mp3
который отлично работает на консоли.
#!/bin/bash
# "extract_mp3_from_mp4.sh test.mp4 test.mp3"
if [ $# == 0 ]; then
echo -e "Extracts mp3 from mp4 video.\nUsage: $0 src_mp4 [target_mp3=src_mp4.mp3];"
exit 0;
fi;
file_in=$1;
file_out=$2;
if [ -z $file_out ]; then file_out="${file_in}.mp3"; fi;
echo "Attempting to extract '${file_in}' to '${file_out}'";
cmd="avconv -i ${file_in} ${file_out};";
echo "Casting command: ${cmd}";
exit `$cmd`;
Рассмотрим на вызов
./extract_mp3_from_mp4.sh test.mp4 test.mp3
создания команды
avconv -i test.mp4 test.mp3;
Что озадачивает меня это: Команда, созданная скрипте абсолютно справедливы. Если я скопирую его из вывода, генерируемого , эхо «Команда каста: ...» прямо в консоль команда работает должным образом. Однако при использовании в сценарии ($cmd
выходе) avconv возвращает
Unable to find a suitable output format for 'test.mp3;
Как это может быть?
Вы пробовали удаления точки с запятой из строчки, которую вы создаете? –