From: Raphael Becker (beckerra_at_rumms.uni-mannheim.de)
Date: 11. Mar 2000
Raphael Becker wrote:
> Mathias Waack wrote:
> > > "|IFS=' ';exec /usr/bin/procmail #msdemlei"
> > pipen soll. Wozu brauchts bei Dir das IFS, was tut das?
>
> IFS ist eine interne bash-Variable (Internal Field Separator) und
> enthält üblicherweise ``<space><tab><newline>''. IFS wird dazu
> verwendet zB aus einem Parameterstring unterteilbare Einzelparameter
> zu machen, Trennzeichen sozusagen.
> man bash
hier mal ein typischer Anwendungsfall, wo man die IFS-VAriable
temporär umstellt (sozusagen als allgemeine Listenweiterbildung ;-):
(bash)
$ (IFS=":"; for DIR in $PATH; do echo $DIR; done)
(die Klammern sind wichtig, sonst "wirkt" IFS später auch in der
interaktiven Shell, was teilweise sehr merkwürdig werden könnte.)
Der Befehl macht folgendes:
"Für jedes Element aus der Liste $PATH(unterteilt durch ":") zeige
Elementname an"
oder auch einfach eine Auflistung aller im Suchpfad ($PATH) stehenden
Verzeichnisse.
das selbe kann man, wo ich schon dabei bin, auch mit diesem Befehl
erreichen:
for DIR in $(echo $PATH | sed -e 's/:/\ /g'); do echo $DIR; done
was letztlich die Liste, die der for-Befehl erwartet dadurch erzeugt,
daß man mit Zeichenersetzung (substitution) die Doppelpunkte in
Leerzeichen verwendelt (sed), das Ausgabeergebnis wiederum durch das
umschließende $() (danke an naddy, vorher kannte ich nur ``) als
String an "for" zurückgibt.
Nunja, es gibt sicher elegantere Lösungen.
Gruß
Raphael Becker
-- Hi! I'm a .signature virus! Copy me into your ~/.signature to help me spread! http://signature.home.pages.de/
Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET