Here Dokument: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
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 "cat<<HERE" wird bis zu "HERE" ausgegeben. Das Wort "HERE" ist beliebig. Wichtig hinter dem 2. Wort darf keine Leerzeichnen stehen.
 
== 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>
*[[Aufgaben Bash Heredokument]]
 
== 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