LINUX.ORG.RU

Помогите найти ошибку в скрипте на bash


0

1

Имеется скрипт следующего вида

#!/bin/bash
FILE_LIST="x"
ls -1 *.wav > $FILE_LIST
while read WAV_FILE 
	do 
	FLAC_FILE=`echo $WAV_FILE | sed 's/.wav/.flac/g'` ;
	ffmpeg -y -i "$WAV_FILE" -acodec flac "$FLAC_FILE"
done < "$FILE_LIST"

Проблема в том, что с командой ffmpeg while прогоняется только один раз, т.е. ffmpeg конвертирует только один файл. При этом цикл рабочий, и это видно, если подставить, например, cp -v «$WAV_FILE» «$FLAC_FILE» вместо ffmpeg. Где ошибка? И можно ли оптимизировать скрипт, так чтобы чтения файла не происходило, а было напрямую из ls -1 *.wav?

Deleted

если я правильно понял что тебе нужно, то поставь блин flac (если не стоит) и

ls -1 *.wav| while read file
do
    flac <flags> "$file"
done

erfea ★★★★★ ()
Ответ на: комментарий от erfea

Создается список файлов .wav, которые позже конвертируются во .flac.

Deleted ()

for file in *.wav
do
ffmpeg -y -i «$file» -acodec flac «${file//.wav/.flac}»
done

А лучше:
for file in *.wav; do
flac «$file»
done

AITap ★★★★★ ()
Ответ на: комментарий от AITap

в случе наличия пробелов в именах файлов, возможны ошибки, while read читает построчно и ls -1 выводит построчно, что исключает возможность ошибок на этой почве.

erfea ★★★★★ ()

Тихий ужас... индусы и студенты-троешники отдыхают...

Не пиши ничего на шелле, пожалуйста

Led ★★★☆☆ ()
Ответ на: комментарий от erfea

man bash:

Word Splitting
… Note that if no expansion occurs, no splitting is performed.

Pathname Expansion
After word splitting, … bash scans each word for the characters *, ?, and [. If one of these characters appears, then the word is … replaced with an … list of file names

Перевести, или так понятно?

uzbl ()
Ответ на: комментарий от erfea

Скорее всего, ты использовал не

for i in *.jpg;
а
for i in `ls *.jpg`;

uzbl ()
Ответ на: комментарий от Led

Я для себя это писал. А если это напрягает твои светлые очи, не заходи на лоровский форум, пожалуйста.

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.