2015-04-04 3 views
-1

У меня, вероятно, отсутствует что-то действительно простое, но мне сложно создать службу автомата, которая запускает сценарий оболочки bash. Все элементы сценария отлично работают при подключении к оболочке, но по какой-то причине служба автомата не работает. Сценарий вызывает FFmpeg для преобразования аудио-файла, переданного ему из искателем:Ошибка сценария оболочки bash bash

for f in "[email protected]" 
 
do 
 
    fn="${f%%.*}" 
 
    ~/Applications/ffmpeg/ffmpeg -i "$f" -acodec libmp3lame -q:a 7 -ar 8000 -ac 1 "$fn.mp3" 
 
done

скрипт работает нормально без команды FFmpeg, а команда FFmpeg работает нормально в терминале по себе , Откуда возникает ошибка?

Спасибо!

+0

Показать, что скрипт пытается выполнить с помощью 'set -x',' echo 'f = $ f, fn = $ fn "или' echo ~/Applications/ffmpeg/ffmpeg -i "$ f" -acodec libmp3lame -q: a 7 -ar 8000 -ac 1 "$ fn.mp3" ' –

+0

Спасибо за помощь @WalterA. После долгой работы с ним в конечном итоге возникла некоторая разница в том, как терминал и автомат обрабатывают переменные строки. Пока команда выполняется отлично в терминале, мне нужно было добавить скобки вокруг переменной fn в automator. ~/Приложения/ffmpeg/ffmpeg -i "$ f" -acodec libmp3lame -q: a 7 -ar 8000 -ac 1 "$ {fn} .mp3" работает нормально. – Dae

ответ

0

В конечном итоге это была некоторая разница в том, как терминал и автомат обрабатывают переменные строки. Пока команда выполняется отлично в терминале, мне нужно было добавить скобки вокруг переменной fn в automator.

~/Applications/ffmpeg/ffmpeg -i "$f" -acodec libmp3lame -q:a 7 -ar 8000 -ac 1 "${fn}.mp3" 

работает только отлично.

Смежные вопросы