@framp: Ja, ich weiß ja, daß Du Dich auch mit Python sehr gut auskennst. (Ich wähle Python im Forum gegenüber Anfängern lieber nicht, weil man ihnen dann erst die Sache mit den Einrückungen erklären müßte, die zuerst bestimmt schiefgeht, so daß dann nichts läuft - sowie das leidige Thema von Python 3 vs. Python 2.7, bei dem ich auf der Seite von 2.7 stehe, solange das dämlich "print()" nicht rückgängig gemacht wird - Guido van Rossum selbst war bereit, es rückgängig zu machen oder (noch besser) beide Alternativen zuzulassen, nur die bei Python extrem dogmatische und betonköpfige Community nicht).
Über die Tücken von bash haben wir auch schon mehrfach gesprochen:
- Unerwartet aufgehende Subshells, die plötzlich Variablen verschwinden lassen - was nur sehr schwer zu korrigieren ist,
- Mangelhafter Array-Support: ("${files[@]}" ist ja nun auch nicht sehr intuitiv, und ich bin mir gar nicht so sicher, ob das in so einer Konstruktion immer zuverlässig funktioniert). An sowas wie "Array of Array" ist gar nicht zu denken (vielleicht gibt es das sogar, aber wenn, dann nur schlecht und rudimentär).
- Nur schwache Funktionalität zum Verarbeiten von Strings: Am Ende ist man bei awk und sed, da kann man auch gleich alles in Perl schreiben und hat insgesamt weniger Probleme (s.o.),
- Hintergrundwissen erforderlich, wie das mit der "3" hier,
- Am besten alle Variablen in Anführungszeichen setzen, sonst ist da irgendwo ein Leerzeichen im String, und alles geht schief: Da sollte der OP hier auch noch mehr Anführungszeichen setzen;
- Selbst die umfangreichste Dokumentation, nämlich
diese, konnte mir manches Verhalten von bash nicht erklären und trotz vieler Beispiele keines geben, wie man die Probleme los wird.
Also, es mag objektiv möglich sein, das alles irgendwie zu bewältigen, wenn man sich da sehr intensiv einarbeitet. Schließlich wurden umfangreiche Installationsskripte oder ein (obskures, aber cooles Projekt namens "dvd-wizard") in bash geschrieben, das war offenbar möglich.
Aber ich hab' mir schon so manches Mal an bash die Zähne ausgebissen, und sehe auch nicht ein, da tiefer einzusteigen. Weil das meiste in Perl auch geht, und dann einfacher.
Nicht wenige Leute gehen dazu über, auch Installationsskripte einfach in Perl zu schreiben. Das geht auch.
Wenn mal etwas Spezielles ist, wie hier das "clean", und es dafür kein Perl-Modul gibt (oder man keine Lust hat, es herauszusuchen), macht man halt einen "system"-Call (s.o.).
Jetzt hab' ich schon wieder viel zu viel darüber geschrieben, das ist ja nicht das erste Mal, daß dieses "Programm, Perl zu empfehlen" bei mir abläuft. Aber ich kann's halt nicht mit ansehen, wie Anfänger sich in meinen Augen gänzlich unnötig mit bash herumquälen. Nur weil das die erste Skriptsprache ist, auf die sie stoßen - die aber ausgerechnet eine aus der Unix-Steinzeit * ist, die überhaupt nicht für Anfänger konzipiert ist, und die sich gar nicht zum Einstieg eignet. Das schreckt die Leute natürlich ab, und das finde ich schade. Möchte mal wissen, wie viele potentielle Programmierer der Welt verlorengegangen sind, nur weil bash so'ne Bitch ist (wie man heute vielleicht sagen würde).
* Kompatibel zu der Unix-Shell "sh" von 1977.