• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Inline Daten im bash script

framp

Moderator
Teammitglied
Ich weiss es ist möglich im shell Script inline Daten zu haben, die man im Script mit read liest. Ich kann mich noch erinnern, das man den delimiter angeben kann, der die Inline Daten beendet.

Irgendsowas wie

Code:
read << END_DELIMITER

eins zwei drei vier

END_DELIMITER

und ich erhalte in einer Loop 'eins' 'zwei' 'drei' und 'vier'

Ich suche jetzt schon länger aber irgendwie finde ich die genaue Syntax einfach nicht :???:
 
Das Ganze nennt sich "here document".
Statt Stdin zu lesen kann man schreiben:

<befehl> <<BELIEBIGERTEXT
....Document...
BELIEBIGERTEXT

Z.B. cat << EOP | less
Ich bin ein Text
EOP

Wichtig ist dabei, dass das Ende/die Endezeile _ohne_ weitere Zeichen, also auch keine Leerzeichen hinter "BELIEBIGERTEXT" hat.
mit dem backslash , also <<\BELIEBIEGERTEXT verhindert man, dass Variablen ($...) oder `befehle` innerhalb des Dokumentes ersetz/ausgeführt wird.

Haveaniceday.

Als Beispiel:
Code:
cat <<EOP | while read text
eins
zwei
drei
EOP
do
  echo Der Text ist $text
done
 
OP
framp

framp

Moderator
Teammitglied
haveaniceday schrieb:
mit dem backslash , also <<\BELIEBIEGERTEXT verhindert man, dass Variablen ($...) oder `befehle` innerhalb des Dokumentes ersetz/ausgeführt wird.
Thx. Genau das ist es :up: . Speziell auch der Hinweis auf den \.
 
Oben