Я использую простой скрипт для создания .mp3s из файлов .mp4:
#!/bin/bash
for i in *.mp4
do
ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done
Скрипт работает нормально при запуске с рабочего стола или при вызове через терминал. Когда скрипт вызывается из внешнего скрипта, он не запускается, возвращая
msgstr "* .mp4: Нет такого файла или каталога".
Я подозреваю, что проблема связана с расширением оболочки, но я не могу понять, как это исправить в этой ситуации.
*.mp4
найти соответствие ни одному файлу, она рассматривает его как буквальное имя файла и пытается открыть файл с именем*.mp4
(который является допустимым именем файла) и завершается неудачей, потому что у вас нет файла вызывается*.mp4
в текущем каталоге. Кто-то может подумать, что он*.mp4
всегда расширяется до списка совпадающих имен файлов, который может быть пустым (и в этом случаеfor
цикл ничего не делает, но ошибок не возникает), это не так:*.mp4
всегда расширяется до чего-то.bash
), но не всегда; посмотрите наnullglob
/failglob
.