Portál AbcLinuxu, 13. května 2025 23:44

Dotaz: while read

14.3.2011 16:00 Jarda
while read
Přečteno: 427×
Odpovědět | Admin

ahoj:-) teprve začínám a zasekl jsem se na jedné nejasnosti:-) a ta je následující:

 

následující skript si vezme odkazy z textového dokumetu a provádí se až do posledního odkazu.

#!/usr/bin/bash

NEW_MP3="/home/$USER/Plocha/hudba/NEW_MP3"

cat ${NEW_MP3} | \

while read line

do

youtube-dl -t ${line}

done

 

následujícíc skript zpracuje jen první řádek v textovém dokumentu a ukončí se. proč???

#!/usr/bin/bash

konvert="/home/$USER/Plocha/hudba/zdroj"

cat ${konvert} | \

while read line

do

ffmpeg -i ${line}.flv -ab 128k ${line}.mp3

done

 

 

děkuji moc za rady:-)


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 14.3.2011 16:18 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: while read
Odpovědět | | Sbalit | Link | Blokovat | Admin
a pise to nejakou chybu?
Don't panic!
14.3.2011 16:26 Jarda
Rozbalit Rozbalit vše Re: while read
prave, ze nepise. proste se vykona, jako kdybych tam mel jen jeden zaznam. ale je jich tam vice.
Tarmaq avatar 14.3.2011 16:31 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: while read
a kdyz tam misto toho radku s ffmpeg napises jen
echo ${line}
tak se to napise vickrat?
Don't panic!
14.3.2011 16:52 ams
Rozbalit Rozbalit vše Re: while read
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chyba je zpusobena tim, ze ffmpeg cte informaci nejenom ze souboru, ale i ze standardniho vstupu. V tomto pripade pri zpracovani prvniho souboru ffmpeg nejenom prekonvertuje soubor ${line}.flv, ale "spolkne" zaroven i zbytek standardniho vstupu, coz je cely soubor ${konvert} a nasledne stdin uzavre. Pak uz bash nema co cist a vsechno skonci po prvni iteraci. Reseni: podstrcit ffmpeg jiny stdin, a to /dev/null. Zaroven poznamenam, ze reseni cat soubor | while read ... done neni optimalni, je podstatne lepsi pouzivat while read ... done < soubor.
#!/usr/bin/bash
konvert="/home/$USER/Plocha/hudba/zdroj"
while read line
do
ffmpeg -i "${line}.flv" -ab 128k "${line}.mp3" < /dev/null
done < "${konvert}"
14.3.2011 20:08 Jarda Šimon
Rozbalit Rozbalit vše Re: while read
dekuji moc;-)

jeste se chci zeptat, kdybych oba scripty chtel dat do jednoho a mezi ne jeste implementovat ls > zdroj tak by to bylo? s tim jsem taky dlouho bojoval a bez uspechu.

dekuji moc :-)
14.3.2011 21:10 Jarda
Rozbalit Rozbalit vše Re: while read
tak uz v pohode :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.