script mindig kérdez

Úgy látszik fáradt vagyok már.
Hol változtassak, hogy ne tegye fel minden egyes új fájlnál a kérdést?

for files in *.flv; do
echo "ffmpeg vagy mencoder? (1/2) "
read answer

if [ "${answer}" = "1" ]; then
ffmpeg -i ${files} ${files%flv}avi
else
mencoder -forceidx ${files} -ovc xvid -xvidencopts bitrate=350:trellis:hq_ac:chroma_opt:quant_type=mpeg -oac mp3lame -o ${files%flv}avi
fi
done

Valahogy úgy szeretném hogy minden flv fájlt alakítson át a megadott programmal, kérdés nélkül.

A script elején ami nincs beillesztve, van még kérdés a gép kikapcsolására, az eredeti fájlok megtartására is. Tehát azokat is figyelembe kell vennem, ha máshogy állnék neki. Teszem azt find-del keresem az flv fájlokat. de akkor hogy lesz átnevezve?
ááááh késő van.

Hozzászólások

Hát... talán ne a ciklusmagban kérdezz minden egyes iterációban, a files minden egyes értékénél, hanem még a ciklus előtt. Az echo és a read legyen a for előtt. Különben a read-nek van -p kapcsolója is, akkor még az echo sem kell, valamint van olyan is bash-ben, hogy select. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Amit még mondani szeretnék, hogy az ffmpeg-hez erősen ajánlom a -nostdin kapcsolót, továbbá a filenév helyettesítéseket rakd idézőjelbe, mert ha szóköz van valamelyik filenévben, elhasal a scripted.

Tipp:

read -r -N 1 -p 'ffmpeg[1] vagy mencoder[2]? ' answer

for ...; do

if [ x"$answer" = x'2' ]; then
mencoder ...
else
ffmpeg ...
fi
done

De csinálhatod úgy is, hogy még a ciklus előtt összerakod az ffmpeg-es vagy mencoder-es sort, aztán a ciklusban csak helyettesíted, így a ciklusmagban nem lesz if. Persze ekkor észnél kell lenni az idézőjelekkel, backslash-ekkel, esetleges eval-lal.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE