Joachim Tüns schrieb:
Was habe ich gelernt (ich hoffe richtig zu liegen)? $i ist nur eine Kurzform der zuvelässigeren Form ${i} und bei der Parameter- und Variablenexpansion kann ich auch Texte ersetzen ${i/suche/ersetze}
So ungefaehr, ja... Wie andere schon schrieben: man muss ein wenig mit "gemeinen" Dateinamen aufpassen, die z.B. Leerzeichen enthalten. Quoten ist oft eine gute Sache. Man muss seinen Shell-Befehl eben den jeweiligen Bedingungen anpassen. Wenn ich weiss, dass ich nur "normale" Dateinamen habe, dann kann ich gewisse Dinge einfacher gestalten. Was ${i/suche/ersetze} angeht: In dieser Variante wird nur das erste Auftauchen von "suche" durch "ersetze" ersetzt in der expandierten $i Variable. Bei David hast Du auch mal ein ${i//suche/ersetze} gesehen - das wird dann alle Vorkommen von "suche" durch "ersetze" ersetzen. Evtl. waere in Dei- nem Falle ein ${i/%suche/ersetze} angebracht, denn das % sorgt da- fuer, dass "suche" am Ende der expandierten Variable $i zutreffen muss - insbesondere wenn man also Suffices ersetzen will in Datei- namen, kann das hilfreich sein. Kleines Beispiel: $> i="wav_datei_wav.wav" <- meine Variable $> echo ${i/wav/wuff} <- nur erstes Auftauchen von wav wird wuff_datei_wav.wav durch wuff ersetzt $> echo ${i//wav/wuff} <- alle vorkommenden wav in $i werden wuff_datei_wuff.wuff durch wuff ersetzt $> echo ${i/%wav/wuff} <- nur das wav am Ende der expandierten wav_datei_wav.wuff Variablen $i wird ersetzt durch wuff $> Aber vorsicht: diese Art der Variablenmanipulation ist Bash-spezi- fisch. Siehe "man bash", Kapitel "EXPANSION", Unterkapitel "Para- meter Expansion". HTH, Thomson