Here Dokument: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
| (2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| 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, 21: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