LINUX.ORG.RU

[bash] [WTF WTF] Что не так?

 


0

0
ls */*ape | awk 'FS="/" {print $1}'|uniq|while read dir; do cd /usr/home/neko/data/part4/\(JPop\)\ Kokia\ -\ 12\ альбомов\ и\ 15\ синглов\ -\ 1998-2009/"$dir"; pwd ; for ape in *ape; ffmpeg -i "$ape" "`echo $ape | sed -e 's/ape/ogg/'`"; done

Заходит в первую директорию, ffmpeg-ит там всё, что надо, и затыкается. При этом

ls */*ape | awk 'FS="/" {print $1}'|uniq|while read dir; do cd /usr/home/neko/data/part4/\(JPop\)\ Kokia\ -\ 12\ альбомов\ и\ 15\ синглов\ -\ 1998-2009/"$dir"; echo "$PWD"
done
Работает ок. Что я сделал не так?

Во-первых у тебя нехватает done.
Во-вторых, за транскодирование lossy стоит откручивать руки.

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

Точне, for foo; do smthing; done; done #для внешнего

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

Да и если прикрутить for ape in *ape; do ffmpeg -i blah blah; done — ничего не изменяется в любом слуаче.

NekoExMachina
() автор топика

ls */*flac | awk 'FS=«/» {print $1}'|uniq|while read dir; do cd /mnt/share/music/Mozart/«$dir»; echo «$PWD» ; for i in *flac ; do oggenc «$i» ; done ; done

Отработало нормально, добавь done ;, как сказали.

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

Окей, я могу сказать 'с do и done'
Но это, блин, очевидно
Потому что без do просто не запустилось бы нифига
А в сабже - ещё раз, первую директорию обрабатываем и _выходим_, и больше ничего не делаем.

NekoExMachina
() автор топика
Ответ на: комментарий от NekoExMachina

>for foo in x y z; echo $foo работает, не в done дело т.ч.
$ for foo in x y z; echo $foo
-bash: syntax error near unexpected token `echo'
У меня неправильный баш?

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

>Не уверен, что for ape in *.ape отработает

См. мой пост, у меня отработал.

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

Упц.
Это не баш, это zsh.
Не думал, что разница столь глобальна.

NekoExMachina
() автор топика
Ответ на: комментарий от x3al

for ape in *ape отрабатывает - первая директория нормально конвертится.

NekoExMachina
() автор топика

>ls */*ape | awk 'FS=«/» {print $1}'
у меня это как-то криво отрабатывает, может попробуешь
find -mindepth 2 -maxdepth 2 -type f -iname '*.ape' -printf '%h\n'

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