Here Dokument: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(Eine dazwischenliegende Version desselben Benutzers wird 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 "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>
 +
 +
== 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