Here Dokument: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Heredocs dienen zur Definition von Textabschnitten. Im Unterschied zur herkömmlichen Ausgabe per echo werden enthaltene Zeilenumbrüche, Einzüge und einige…“)
 
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Heredocs dienen zur Definition von Textabschnitten. Im Unterschied zur herkömmlichen Ausgabe per echo  werden enthaltene Zeilenumbrüche, Einzüge und einige Sonderzeichen im Text bewahrt. Die Bash ermöglicht auch die Verwendung von Variablen innerhalb des Heredoc.
+
==Was ist das?==
 +
*Ein Here-Dokument in Bash ermöglicht es, mehrzeilige Eingaben oder Skripte direkt in einem Befehl oder Skript zu definieren, ohne dass eine separate Datei erstellt werden muss.
 +
*Mit dem Here-Dokument kann eine spezielle Syntax verwendet werden, um den Anfang und das Ende des Dokuments zu markieren, beispielsweise <<EOF und EOF, wobei "EOF" als Trennsymbol dient.
 +
*Der Inhalt des Here-Dokuments wird in der Regel als Eingabe an einen Befehl oder in eine Datei umgeleitet und kann Variablen, Befehlsausführungen oder andere Shell-Ausdrücke enthalten.
 +
*Heredocs dienen zur Definition von Textabschnitten.  
 +
= Here-Dokumente in Bash =
 +
 
 +
== Was ist das? ==
 +
* Ein Here-Dokument (''Heredoc'') in Bash ermöglicht es, mehrzeilige Eingaben oder Skripte direkt in einem Befehl oder Skript zu definieren, ohne dass eine separate Datei erstellt werden muss.
 +
* Dabei wird eine spezielle Syntax verwendet, um den Anfang und das Ende des Textblocks zu markieren – typischerweise '''<<EOF''' und '''EOF''', wobei „EOF“ ein beliebiges Trennsymbol ist.
 +
* Der Inhalt des Here-Dokuments wird in der Regel als Eingabe an einen Befehl oder in eine Datei umgeleitet und kann Variablen, Befehlsausgaben oder andere Shell-Ausdrücke enthalten.
 +
* Here-Documents dienen der komfortablen Definition von Textabschnitten, z. B. Konfigurationsdateien oder Vorlagen.
 +
 
 +
== Umsetzung ==
 +
Der Block ab '''cat <<HERE''' wird bis zum abschließenden '''HERE''' ausgegeben. 
 +
Das Trennwort (hier '''HERE''') ist frei wählbar, darf jedoch **keine Leerzeichen enthalten**.
  
Der Block ab "cat<<HERE" wird bis zu "HERE" ausgegeben. Das Wort "HERE" ist beliebig. Wichtig hinter dem 2 Wort darf keine Leerzeichnen stehen.
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
#!/bin/bash
 
#!/bin/bash
Zeile 8: Zeile 22:
 
NM=$3
 
NM=$3
 
GW=$4
 
GW=$4
cat<<HERE
+
 
 +
cat <<HERE
 
auto $INT
 
auto $INT
 
iface $INT inet static
 
iface $INT inet static
Zeile 16: Zeile 31:
 
HERE
 
HERE
 
</syntaxhighlight>
 
</syntaxhighlight>
*./interface-gen.sh eth3 192.168.24.67 255.255.255.0 192.168.24.1
+
 
 +
Aufrufbeispiel:
 +
* '''./interface-gen.sh eth3 192.168.24.67 255.255.255.0 192.168.24.1'''
 +
 
 +
Ausgabe:
 
<pre>
 
<pre>
 
auto eth3
 
auto eth3
Zeile 24: Zeile 43:
 
  gateway 192.168.24.1
 
  gateway 192.168.24.1
 
</pre>
 
</pre>
 +
 +
== Aufgabe – Samba-Konfiguration mit Here-Dokument ==
 +
 +
; Ziel:
 +
Erstellen Sie mit einem Bash-Skript eine minimale Samba-Konfiguration mithilfe eines Here-Dokuments.
 +
 +
; Beschreibung:
 +
* Das Skript soll drei Parameter entgegennehmen:
 +
** '''<workgroup>'''
 +
** '''<share>'''
 +
** '''<path>'''
 +
* Diese Parameter sollen im Text des Here-Dokuments als Variablen verwendet werden.
 +
* Das Skript gibt den erzeugten Konfigurationsinhalt auf der Standardausgabe aus (keine Datei schreiben!).
 +
 +
Beispielinhalt:
 +
<pre>
 +
[global]
 +
    workgroup = <workgroup>
 +
    server role = standalone server
 +
    passdb backend = tdbsam
 +
    usershare allow guests = Yes
 +
 +
[<share>]
 +
    comment = share dir
 +
    path = <path>
 +
    read only = No
 +
    store dos attributes = Yes
 +
    inherit acls = Yes
 +
</pre>
 +
 +
; Hinweise:
 +
* Nutzen Sie Variablenersetzung im Here-Dokument, z. B.:
 +
  '''cat <<EOF'''
 +
* Testen Sie das Skript mit:
 +
  '''./samba-gen.sh ARBEITSGRUPPE public /srv/samba/public'''
 +
 +
<!--
 +
== Musterlösung ==
 +
<syntaxhighlight lang="bash">
 +
#!/bin/bash
 +
# samba-gen.sh
 +
# Erstellt eine minimale Samba-Konfiguration per Here-Dokument
 +
 +
WORKGROUP=$1
 +
SHARE=$2
 +
PATHNAME=$3
 +
 +
cat <<EOF
 +
[global]
 +
    workgroup = $WORKGROUP
 +
    server role = standalone server
 +
    passdb backend = tdbsam
 +
    usershare allow guests = Yes
 +
 +
[$SHARE]
 +
    comment = share dir
 +
    path = $PATHNAME
 +
    read only = No
 +
    store dos attributes = Yes
 +
    inherit acls = Yes
 +
EOF
 +
</syntaxhighlight>
 +
-->

Aktuelle Version vom 12. Oktober 2025, 19:36 Uhr

Was ist das?

  • Ein Here-Dokument in Bash ermöglicht es, mehrzeilige Eingaben oder Skripte direkt in einem Befehl oder Skript zu definieren, ohne dass eine separate Datei erstellt werden muss.
  • Mit dem Here-Dokument kann eine spezielle Syntax verwendet werden, um den Anfang und das Ende des Dokuments zu markieren, beispielsweise <<EOF und EOF, wobei "EOF" als Trennsymbol dient.
  • Der Inhalt des Here-Dokuments wird in der Regel als Eingabe an einen Befehl oder in eine Datei umgeleitet und kann Variablen, Befehlsausführungen oder andere Shell-Ausdrücke enthalten.
  • Heredocs dienen zur Definition von Textabschnitten.

Here-Dokumente in Bash

Was ist das?

  • Ein Here-Dokument (Heredoc) in Bash ermöglicht es, mehrzeilige Eingaben oder Skripte direkt in einem Befehl oder Skript zu definieren, ohne dass eine separate Datei erstellt werden muss.
  • Dabei wird eine spezielle Syntax verwendet, um den Anfang und das Ende des Textblocks zu markieren – typischerweise <<EOF und EOF, wobei „EOF“ ein beliebiges Trennsymbol ist.
  • Der Inhalt des Here-Dokuments wird in der Regel als Eingabe an einen Befehl oder in eine Datei umgeleitet und kann Variablen, Befehlsausgaben oder andere Shell-Ausdrücke enthalten.
  • Here-Documents dienen der komfortablen Definition von Textabschnitten, z. B. Konfigurationsdateien oder Vorlagen.

Umsetzung

Der Block ab cat <<HERE wird bis zum abschließenden HERE ausgegeben. Das Trennwort (hier HERE) ist frei wählbar, darf jedoch **keine Leerzeichen enthalten**.

#!/bin/bash
INT=$1
IP=$2
NM=$3
GW=$4

cat <<HERE
auto $INT
iface $INT inet static
 address $IP
 netmask $NM
 gateway $GW
HERE

Aufrufbeispiel:

  • ./interface-gen.sh eth3 192.168.24.67 255.255.255.0 192.168.24.1

Ausgabe:

auto eth3
iface eth3 inet static
 address 192.168.24.67
 netmask 255.255.255.0
 gateway 192.168.24.1

Aufgabe – Samba-Konfiguration mit Here-Dokument

Ziel

Erstellen Sie mit einem Bash-Skript eine minimale Samba-Konfiguration mithilfe eines Here-Dokuments.

Beschreibung
  • Das Skript soll drei Parameter entgegennehmen:
    • <workgroup>
    • <share>
    • <path>
  • Diese Parameter sollen im Text des Here-Dokuments als Variablen verwendet werden.
  • Das Skript gibt den erzeugten Konfigurationsinhalt auf der Standardausgabe aus (keine Datei schreiben!).

Beispielinhalt:

[global]
    workgroup = <workgroup>
    server role = standalone server
    passdb backend = tdbsam
    usershare allow guests = Yes

[<share>]
    comment = share dir
    path = <path>
    read only = No
    store dos attributes = Yes
    inherit acls = Yes
Hinweise
  • Nutzen Sie Variablenersetzung im Here-Dokument, z. B.:
 cat <<EOF
  • Testen Sie das Skript mit:
 ./samba-gen.sh ARBEITSGRUPPE public /srv/samba/public