LINUX.ORG.RU

История изменений

Исправление legolegs, (текущая версия) :

eval

Никогда, блин, не используйте eval для ваших шеллскриптов. Наедитесь говна с кавычками.

/usr/local/bin/any2wav.sh:

#/bin/bash
while [ $# -gt 0 ]; do
    ffmpeg -nostdin -loglevel quiet -i "$1" -y -ar 44100 "${1%.*}.wav"
    shift
done

all2wav.sh:

find \( -iname \*.mp3 \
     -or -iname \*.ogg \
     \) -exec /usr/local/bin/any2wav.sh {} +

Всё.

В bash исполняемый код наиболее естественным образом организуется в исполняемые файлы (и в функции), а не в строки. И для сущности список файлов лучшим типом данных является argv. Как бонус, any2wav всегда можно переделать на многопоточный режим.

Исходная версия legolegs, :

eval

Никогда, блин, не используйте eval для ваших шеллскриптов. Наедитесь говна с кавычками.

/usr/local/bin/any2wav.sh:

#/bin/bash
while [ $# -gt 0 ]; do
    ffmpeg -loglevel quiet -i "$1" -y -ar 44100 "${1%.*}.wav"
    shift
done

all2wav.sh:

find \( -iname \*.mp3 \
     -or -iname \*.ogg \
     \) -exec /usr/local/bin/any2wav.sh {} +

Всё.

В bash исполняемый код наиболее естественным образом организуется в исполняемые файлы (и в функции), а не в строки. И для сущности список файлов лучшим типом данных является argv. Как бонус, any2wav всегда можно переделать на многопоточный режим.