[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash; nur eine variablen zuweisung



On Mon, Nov 27, 2006 at 03:41:46PM +0100, Roland M. Kruggel wrote:
> Ich will doch nur eine Programmausgabe in einer Variablen speicher und 
> die dann wieder ausgeben. (per mail versenden)
> 
> so siet es auf der schell aus. Das ist ok.
> -->
> mail1:~# tail -4 /var/log/auth.log
> Nov 27 15:35:01 mail1 sshd[15593]: (pam_unix) session opened for user 
> rkruggel by (uid=0)
> Nov 27 15:35:31 mail1 sshd[15593]: (pam_unix) session closed for user 
> rkruggel
> Nov 27 15:35:52 mail1 sshd[15612]: Accepted publickey for root from 
> 80.145.46.85 port 62875 ssh2
> Nov 27 15:35:52 mail1 sshd[15627]: (pam_unix) session opened for user 
> root by root(uid=0)
> --<
> 
> ...und nun sind meine ganzen lienefeeds weg.
> -->
> mail1:~# a=`tail -4 /var/log/auth.log`
> mail1:~# echo $a
> Nov 27 15:35:01 mail1 sshd[15593]: (pam_unix) session opened for user 
> rkruggel by (uid=0) Nov 27 15:35:31 mail1 sshd[15593]: (pam_unix) 
> session closed for user rkruggel Nov 27 15:35:52 mail1 sshd[15612]: 
> Accepted publickey for root from 80.145.46.85 port 62875 ssh2 Nov 27 
> 15:35:52 mail1 sshd[15627]: (pam_unix) session opened for user root 
> by root(uid=0)
> --<
> 
> Wie krieg ich meine linefeeds wieder hin?

Ich sehe hier noch linefeeds meist an anderer
Stelle, als bei der direkten Ausgabe ans Terminal,
deren Auftreten nach word wrapping aussieht.

Lies doch mal die Dokumentation der bash zu Word
Splitting, Internal Field Separator, IFS, Command
Substitution, Quote Removal, usw., damit du
siehst, was die bash mit den Eingaben macht, bevor
ein Kommando ausgeführt wird.

Kurz: Die Eingabe wird an Whitespace Characters,
die in der bash definiert sind, zu einem
bestimmten Zeitpunkt der Eingabeinterpretation in
Worte aufgeteilt und diese Worte werden später mit
Trennung durch Word Separator Characters zu einem
String zusammen gebaut.  Die LFs in der Ausgabe
kommen vermutlich vom Terminal oder einem
Programm, das die Ausgabe ans Terminal sendet.

Vielleicht geht es mit

mail1:~# a="`tail -4 /var/log/auth.log`"

eher so, wie du es willst.  Vielleicht mußt du
aber auch ein bißchen mehr dafür schreiben.


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: