Here Dokument: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 4: | Zeile 4: | ||
*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. | *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. | *Heredocs dienen zur Definition von Textabschnitten. | ||
| − | ==Umsetzung== | + | = Here-Dokumente in Bash = |
| − | Der Block ab | + | |
| + | == 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**. | ||
| + | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
| Zeile 12: | 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 20: | 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 28: | 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