Re: bash; nur eine variablen zuweisung
On Mon, Nov 27, 2006 at 04:23:58PM +0100, Roland M. Kruggel wrote:
> Am Montag, 27. November 2006 16:16 schrieb Thorsten Haude:
> > * Roland M. Kruggel wrote (2006-11-27 16:05):
> > >Am Montag, 27. November 2006 15:59 schrieb Thorsten Haude:
> > >> Was ist das Ergebnis von
> > >> foo=`tail -4 /var/log/auth.log`
> > >> echo $foo >foo.out
Hier findet Word Splitting statt. Ersetze
vielleicht einmal diese letzte Zeile oben durch:
echo "$foo" >foo.out
> > >> cat foo.out
> > >
> > >Das gleiche. Keine Linefeeds
> >
> > Ok, bleibt noch
> > tail -4 /var/log/auth.log > foo.out
>
> Das tut's
> Wäre aber eine Krücke :)
Dabei findet kein Word Splitting statt.
> > >> Was sagt 'echo $IFS'?
> > >
> > >Ist ein Linefeed
> >
> > Nur und ausschließlich ein Linefeed? Default sind unter der Bash
> > Space, Tab und Linefeed
>
> mail1:~# echo $IFS| hd
> 00000000 0a |.|
> 00000001
Die Verwendung von hd ist ja eine super Idee.
Versuche mal
echo "$IFS" | hd
Und RTFM zu Word Splitting der bash. Das ist eine
verwirrende Angelegenheit, wenn man nicht genau
weiß, was die bash da alles macht. Insofern
wundert es mich jetzt, dass das LF (0a) hier noch
übrig bleibt.
Ach ne, ich habs:
Das von "echo $IFS" ausgegebene "0a" kommt nicht
aus dem Inhalt der Variablen IFS, sondern wird von
echo an die - in diesem Fall leere - Ausgabe
angehängt. Also das "0a" bleibt nicht vom
Variableninhalt nach der Behandlung durch bash
übrig.
Dazu könntest du auch versuchen:
echo -n $IFS | hd
und
echo | hd
> > >> Hast Du es mit $() versucht?
> > >
> > >Da weis ich jetzt nicht was du meinst
> >
> > Du kannst statt Backticks auch $() benutzen, ich mag das lieber,
> > weil es deutlicher ist.
> > foo=$(tail -4 /var/log/auth.log)
>
> axo.
> Hat aber das gleich ergebniss
Das sollte es. `...` ist bei der bash als
veraltend deklariert und wird durch $(...)
ersetzt. $() ist für Menschen leichter zu lesen
und zu verstehen, als ``, vor allem bei
Verschachtelungen, weil man Anfang und Ende des
Ausdruckes leichter erkennt, aber man muß dafür
leider ein Zeichen mehr eingeben.
Alles Gute
Helmut H. Franke
--
http://www.worte-des-lebens.net/Vaterworte/vaterworte.html
http://firethegrid.org/
http://www.anastasia-de.com/Megre_Buecher/Megre_Buecher.htm
http://itc.napier.ac.uk/e-Petition/bundestag/
Avatar Chat Systeme: http://www.amiculi.net http://pgm.amoris.org
Servamus vitam terramque!
Reply to: