Amikor a part üres string, ott exit 0 az, amit írni szerettél volna, nem pedig quit 0. Fölötte a ciklusban a 2>/dev/null értelmét nem látom, hiszen a vizsgálat szerintem nem fog semmit az stderr-re írni. A $error hivatkozást idézőjelbe tenném. Tudom, hogy az mktemp nem tesz a filenévbe szóközt, tehát a konkrét esetben semmi jelentősége, csak bántja a szemem, rossz szokás. Egyedül akkor nem szoktam idézőjelbe tenni a helyettesítést, ha az a szándékom, hogy adott esetben több paraméterre hulljon szét, amit helyettesítek, ilyen viszont ritkán fordul elő. Mondjuk parancssori kapcsolókat helyettesítesz egy változóval, akkor nyilván nem szabad idézőjelbe tenni, hiszen a helyettesítés után azt szeretnénk, hogy a szóközök mentén több paraméterre essen szét.
Azt a for ciklust nem értem, amit kérdezel. Ugye az rm -f törölne, s a kimenete adná azt a listát, amin a ciklus végigmegy. Ugyanakkor szerintem az rm -f nem fog semmit az stdout-ra írni, így nincs min végigmennie a ciklusnak. Szerintem ilyesmit szerettél volna:
for i in $(seq ${#ext_to_delete[@]}); do
rm -f "$1".${ext_to_delete[i-1]}
done
Itt viszon épp nem kell az idézőjel, mert a shellt elzárod a globbing értelmezésétől. Az egyik sort szerintem így kellene írni ott:
rm -f "$1"[0-9][0-9].cdr
Igaz, nem próbáltam ki.
Az rm -f "$101.iso" gondolom, nem a 101-edik paraméterre akart vonatkozni, így lenne jobb:
rm -f "${1}01.iso"
Rekurzív könyvtár bejárásra alant írtam gondolatébresztőt. Nagyon egyszerű, szerintem nem szorul magyarázatra. Talán annyi, hogy a directory-t úgy vizsgálom, hogy megpróbálok egy cd paranccsal belemenni, ha sikerül, akkor visszahívom a függvényt rekurzívan majd cd ..-tal visszajövök az eredeti mélységre, ha nem, akkor pedig megnézem, regurális file-ról van-e szó, s ha igen, elvégzem a kívánt műveletet vele. Mert ugye a cd parancs exit kódja 0 - true -, ha sikerült, s nem 0 - false -, ha nem.
A for i in $(seq 0 ${#ext[@]}); do
ciklusod túlcímez a tömbön! Ugye az n elemű tömb indexei 0-tól n-1-ig tartanak, s nem n-ig.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE