Re: OT: tab,newline etc. in shellscripts
Andreas Kyek wrote:
string1="Textteil1 Textteil2"
Richtig.
Problem: Ausgabe nicht (!) mit echo $string1, das ergibt dann nämlich "Textteil1 Textteil2".
Auch richtig, denn durch den Whitespace zwischen Textteil1 und Textteil2 werden die beiden von der Shell als getrennte Argumente für echo interpretiert, und echo gibt mehrere Argumente nur durch einzelne Leerzeichen getrennt aus.
Wenn du aber zur Ausgabe printf benutzt: printf "%s\n" $string1
kommt das gewünschte Ergebnis raus. (Getestet auf SuSE7.0)
Das ist aber mehr "Zufall" und hat nichts mit dem Zeilenumbruch in der Definition von string1 zu tun, denn bei printf gilt folgendes: The format is reused as necessary to consume all of the arguments. (Aus `man bash`.) D.h., aus $string1 werden zwei Argumente für printf, und da das Format nur ein Argument benötigt, wird für das zweite Argument das gleiche Format nocheinmal verwendet. So wird jedes der Argumente gefolgt von einem Zeilenumbruch ausgegeben. Ein deutlicheres Beispiel: $ printf '%02d\n' 1 2 3 01 02 03 $ Die richtige Lösung besteht darin, die Variable in Anführungszeichen einzuschließen, so daß der Variableninhalt von der Shell nicht in mehrere Argumente aufgespalten wird. Dann geht's auch mit echo: echo "$string1" Eilert -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org http://www.informatik.uni-bremen.de/~eilert/
On 9 Aug 2001, at 14:00, Eilert Brinkmann wrote: [erschöpfende Auskunft] stimmt. Du hast recht. (Wieder 'ne Kleinigkeit mehr gelernt!) Andreas
participants (2)
-
Andreas Kyek
-
Eilert Brinkmann