Bash Variablen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (18 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | = | + | = Variablen allgemein = |
| − | *Eine Variable | + | * In der Bash-Shell können Variablen verwendet werden, um Daten zu speichern und auf sie zuzugreifen. |
| − | * | + | * Eine Variable wird mit einem Namen definiert und kann einen beliebigen Wert enthalten, z. B. eine Zeichenkette, eine Zahl oder eine Liste von Werten. |
| − | * | + | * Variablen in Bash werden in der Regel ohne explizite Typdeklaration erstellt und können jederzeit neu zugewiesen werden. |
| − | * | + | * Der Wert einer Variable kann mithilfe des Zuweisungsoperators '''=''' festgelegt und durch den Variablennamen abgerufen werden. |
| + | * Es gibt auch vordefinierte Umgebungsvariablen in Bash, die Informationen über das System oder die Shell selbst enthalten (z. B. Benutzername, aktuelles Arbeitsverzeichnis oder Hostname). | ||
| + | * Variablen können in Befehlen und Skripten verwendet werden, um die Flexibilität und Wiederverwendbarkeit von Code zu verbessern. | ||
| − | *Die Definition einer Variablen erfolgt durch | + | = Skalare Variablen = |
| − | *Wichtig : | + | * Eine Variable stellt einen Platzhalter dar. |
| − | * | + | * Man spricht von Variablensubstitution, wenn anstelle der Variablen deren Wert ausgegeben wird. |
| − | + | * Eine Variable muss – im Gegensatz zu kompilierten Programmiersprachen – nicht deklariert werden. | |
| − | + | * Der Interpreter allokiert den Speicherplatz zur Laufzeit. | |
| − | + | * Die Definition einer Variablen erfolgt durch Nennung, gefolgt von '''=''' und dem zugewiesenen Wert. | |
| − | + | * Wichtig: Zwischen Variablenname, '''=''' und Wert darf kein Leerzeichen stehen. | |
| − | + | * Es werden häufig Großbuchstaben verwendet; Bindestriche sollten vermieden werden. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | == | + | == Definition einer Variablen == |
| − | + | * '''GLAS=bier''' | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Ausgabe des Variableninhalts: | |
| − | + | * '''echo $GLAS''' | |
| − | + | bier | |
| − | + | == Beispiel einer Variablensubstitution == | |
| + | * '''UNIXSYSTEM=/usr''' | ||
| + | * '''ls -ld $UNIXSYSTEM''' | ||
| + | drwxr-xr-x 11 root root 4096 2008-10-29 23:58 /usr | ||
| − | + | = Feldvariablen (Arrays) = | |
| + | * In Bash können Feldvariablen (Arrays) verwendet werden, um mehrere Werte unter einem gemeinsamen Namen zu speichern. | ||
| + | * Arrays werden über Indizes angesprochen und erlauben den Zugriff auf mehrere Elemente innerhalb einer Variablen. | ||
| − | + | == Definition == | |
| + | * '''farbe=(blau gelb gruen rot)''' | ||
| − | * | + | == Ausgabe einzelner Elemente == |
| − | * | + | * '''echo ${farbe[0]}''' → blau |
| + | * '''echo ${farbe[1]}''' → gelb | ||
| + | * '''echo ${farbe[2]}''' → gruen | ||
| + | * '''echo ${farbe[3]}''' → rot | ||
| − | * | + | = Assoziative Arrays = |
| − | + | * Assoziative Arrays sind Schlüssel/Wert-Paare und werden ab Bash 4 unterstützt. | |
| − | * | + | * Sie werden mit '''declare -A''' deklariert. |
| − | * | + | * Zugriff erfolgt über den Schlüssel: '''${array[key]}'''. |
| − | |||
| − | |||
| − | |||
| − | = | + | <syntaxhighlight lang=bash> |
| − | + | #!/bin/bash | |
| − | + | declare -A fruits | |
| − | + | fruits["apple"]="red" | |
| + | fruits["banana"]="yellow" | ||
| + | fruits["orange"]="orange" | ||
| − | + | echo ${fruits["apple"]} | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | fruits["grape"]="purple" | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | for key in "${!fruits[@]}"; do | |
| − | + | echo "$key is ${fruits[$key]}" | |
| − | + | done | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | * | + | = Der Exportbefehl = |
| + | * Variablen werden nicht automatisch an Kindprozesse weitergegeben. | ||
| + | * Mit '''export''' werden sie in die Prozessumgebung übernommen, um beim Forken auch im Kindprozess verfügbar zu sein. | ||
| + | * Alle exportierten Variablen können mit '''printenv''' oder '''env''' angezeigt werden. | ||
| + | * Alle Shellvariablen (auch nicht exportierte) werden mit '''set''' angezeigt. | ||
| − | + | = Kommandosubstitution = | |
| − | * | + | * Die Kommandosubstitution ermöglicht, den Ausgabewert eines Befehls in einer Variablen zu speichern oder in einen anderen Befehl einzufügen. |
| − | * | + | * Zwei Varianten: |
| − | + | ** '''$(Befehl)''' – moderne Variante, unterstützt Schachtelung | |
| − | * | + | ** ```Befehl``` – ältere Variante (Backticks) |
| − | |||
| − | * $ | + | Beispiele: |
| + | * '''cd $(echo /home/$(whoami))''' | ||
| + | * '''cd `echo /home/`whoami``` | ||
| + | * '''MOMENT=$(date -u "+%X")''' | ||
| + | * '''echo $MOMENT''' → 09:29:58 | ||
| − | + | = Abgrenzen von Variablen = | |
| + | * Ein Dollarzeichen '''$''' leitet eine Variablenreferenz oder Parameterexpansion ein. | ||
| + | * Geschweifte Klammern '''${...}''' dienen zur Gruppierung. | ||
| − | * | + | == Beispiele == |
| + | * '''SUX=eins''' | ||
| + | * '''TUX=zwei''' | ||
| + | * '''SUXTUX=drei''' | ||
| − | + | * '''echo $SUX''' → eins | |
| + | * '''echo ${SUX}TUX''' → einsTUX | ||
| + | * '''echo ${SUX}${TUX}''' → einszwei | ||
| − | + | = Weitere Mechanismen zur Parameterexpansion = | |
| − | * | + | * Diese Mechanismen manipulieren Variableninhalte. |
| − | + | * '''FARBE''' steht dabei für den Variablennamen, '''rot''' für eine Zeichenkette oder andere Variable. | |
| − | * | ||
| − | |||
| + | == Beispiele == | ||
| + | * '''${FARBE:-rot}''' – Standardwert, wenn nicht gesetzt | ||
| + | * '''${FARBE:=rot}''' – wie oben, zusätzlich wird FARBE belegt | ||
| + | * '''${FARBE:?keine farbe}''' – Fehlermeldung, wenn FARBE nicht definiert | ||
| + | * '''${FARBE:+rot}''' – liefert „rot“, wenn FARBE definiert ist | ||
| + | * '''${FARBE:3}''' – Ausgabe ab Position 3 | ||
| + | * '''${FARBE:5:3}''' – Ausgabe von 3 Zeichen ab Position 5 | ||
| + | * '''${#FARBE}''' – Länge der Variablen | ||
| + | * '''${FARBE#rot}''' – entfernt „rot“ am Anfang | ||
| + | * '''${PROGRAM##*/}''' – entfernt längstmöglich alles bis zum letzten Slash | ||
| + | * '''${FARBE%weis}''' – entfernt „weis“ am Ende | ||
| + | * '''${FARBE%%o*}''' – entfernt längstmöglich ab „o“ | ||
| + | * '''${FARBE/rot/blau}''' – ersetzt erstes „rot“ durch „blau“ | ||
| + | * '''${FARBE//rot/blau}''' – ersetzt alle „rot“ durch „blau“ | ||
| − | =Wichtige Systemvariablen (Auswahl)= | + | = Wichtige Systemvariablen (Auswahl) = |
; PATH | ; PATH | ||
| − | Pfad, in dem nach ausführbaren Programmen gesucht wird | + | Pfad, in dem nach ausführbaren Programmen gesucht wird |
; HOME | ; HOME | ||
| − | Heimatverzeichnis | + | Heimatverzeichnis |
; BASH | ; BASH | ||
| − | Pfadname der aktuellen Shell | + | Pfadname der aktuellen Shell |
; PWD | ; PWD | ||
| − | Aktuelles Verzeichnis | + | Aktuelles Verzeichnis |
; OLDPWD | ; OLDPWD | ||
| − | + | Vorheriges Verzeichnis | |
| − | ; PS1 ,PS2 , PS3 | + | ; PS1, PS2, PS3 |
| − | + | Eingabeprompts 1 – 3 | |
; UID | ; UID | ||
| − | Benutzerkennung | + | Benutzerkennung |
; EDITOR | ; EDITOR | ||
| − | Standardeditor ( | + | Standardeditor (meist vi) |
; MAIL | ; MAIL | ||
| − | + | Pfad zum Postfach | |
; HOSTNAME | ; HOSTNAME | ||
| − | Name des Rechners | + | Name des Rechners |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | = Stellungsparameter (spezielle Variablen) = | |
| + | * Den Stellungsparametern '''$1, $2, …, $9''' werden bei der Definition Werte nach ihrer Reihenfolge zugewiesen. | ||
| + | * Der Geltungsbereich ist lokal – sie gelten nur in der aktuellen Bash und können nicht exportiert werden. | ||
| − | ==Belegen | + | == Belegen mittels set == |
| − | *set der fck ist eine klasse Mannschaft | + | * '''set der fck ist eine klasse Mannschaft''' |
| − | *echo $1 $2 $3 | + | * '''echo $1 $2 $3''' → der fck ist |
| − | + | * '''echo $5 $6 $7''' → eine klasse Mannschaft | |
| − | *echo $5 $6 $7 | + | * '''set unser fcs ist aber auch ok''' |
| − | + | * '''echo $1 $2 $3''' → unser fcs ist | |
| − | *set unser fcs ist aber auch ok | ||
| − | *echo $1 $2 $3 | ||
| − | |||
| − | ==Belegen | + | == Belegen durch Skriptaufruf == |
| − | + | * '''cat skript1''' | |
| − | *cat skript1 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
| − | echo "1 | + | echo "1. Parameter $1" |
| − | echo "2 | + | echo "2. Parameter $2" |
| − | echo "3 | + | echo "3. Parameter $3" |
| − | echo "4 | + | echo "4. Parameter $4" |
| − | echo "alle | + | echo "alle Parameter $*" |
| − | echo "alle | + | echo "alle Parameter $@" |
| − | echo " | + | echo "Anzahl Parameter $#" |
| − | echo " | + | echo "Skriptname $0" |
| − | echo "PID des | + | echo "PID des Skripts $$" |
| − | echo "Rückgabewert letztes Kommando | + | echo "Rückgabewert letztes Kommando $?" |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | * '''./skript1 blau gruen gelb rot''' | ||
| + | = Systemparameter = | ||
{| border=1 cellpadding="2" | {| border=1 cellpadding="2" | ||
| $$ | | $$ | ||
| Zeile 283: | Zeile 172: | ||
|- | |- | ||
| $- | | $- | ||
| − | | Liste der für die | + | | Liste der für die Bash gesetzten Optionen |
|- | |- | ||
| $? | | $? | ||
| − | | | + | | Exit-Status des letzten Kommandos |
|- | |- | ||
| $# | | $# | ||
| Anzahl der Stellungsparameter | | Anzahl der Stellungsparameter | ||
| − | |- | + | |- |
| $* | | $* | ||
| − | | Liste | + | | Liste aller Stellungsparameter |
|- | |- | ||
| $0 | | $0 | ||
| Zeile 298: | Zeile 187: | ||
|} | |} | ||
| − | + | = shift-Kommando = | |
| − | + | * Verschiebt alle Stellungsparameter um eine Stelle nach links. | |
| − | + | * Beispiel: | |
| − | + | ** '''set hallo ihr guten admins von der schule hier''' | |
| − | + | ** '''echo $1 $2 $3 $4''' → hallo ihr guten admins | |
| + | ** '''shift''' | ||
| + | ** '''echo $1 $2 $3 $4''' → ihr guten admins von | ||
| + | ** '''shift 3''' | ||
| + | ** '''echo $1 $2 $3 $4''' → von der schule hier | ||
| + | |||
| + | = Aufgaben = | ||
| + | |||
| + | == Skalare Variablen == | ||
| + | * Ordnen Sie der Variablen '''GLAS''' den Wert '''bier''' zu. | ||
| + | * Geben Sie den Wert der Variablen aus. | ||
| + | * Ordnen Sie einer beliebigen Variablen den Pfad zu einem Verzeichnis zu. | ||
| + | * Lassen Sie sich über den Variablenwert den Inhalt dieses Verzeichnisses anzeigen. | ||
| + | |||
| + | == Feldvariablen == | ||
| + | * Ordnen Sie der Variablen '''FARBE''' die Werte '''schwarz''', '''rot''' und '''gold''' zu. | ||
| + | * Geben Sie jeden Wert einzeln aus. | ||
| + | |||
| + | == Kommandosubstitution == | ||
| + | * Definieren Sie den Begriff Kommandosubstitution. | ||
| + | * Nennen Sie beide Varianten der Kommandosubstitution. | ||
| + | * Was ist der Unterschied? | ||
| + | * Ordnen Sie die Ausgabe von '''date''' einer beliebigen Variablen zu. | ||
| + | * Wie kann man mit '''whoami''' in sein Home-Verzeichnis wechseln? | ||
| + | |||
| + | == Abgrenzen von Variablen (Parameterexpansion) == | ||
| + | * Definieren Sie drei Variablen, wobei die dritte sich aus den ersten beiden zusammensetzt (z. B. SUX, TUX, SUXTUX). | ||
| + | * Geben Sie diese Variablen in allen Abgrenzungsformen wieder. | ||
| − | * | + | == Weitere Mechanismen zur Parameterexpansion == |
| − | *echo $ | + | ; Beschreiben Sie, was bei folgenden Parameterexpansionen passiert: |
| − | + | * '''echo ${FARBE:-rot}''' | |
| − | * | + | * '''echo ${FARBE:=rot}''' |
| − | *echo $ | + | * '''echo ${FARBE:?keine farbe}''' |
| − | + | * '''echo ${FARBE:+rot}''' | |
| − | * | + | * '''echo ${FARBE:3}''' |
| − | *echo $ | + | * '''echo ${FARBE:5:3}''' |
| − | + | * '''echo ${#FARBE}''' | |
| + | * '''echo ${FARBE#rot}''' | ||
| + | * '''echo ${PROGRAM#*/}''' | ||
| + | * '''echo ${FARBE%weis}''' | ||
| + | * '''echo ${FARBE%o*}''' | ||
| + | * '''echo ${FARBE/rot/blau}''' | ||
Aktuelle Version vom 12. Oktober 2025, 19:29 Uhr
Variablen allgemein
- In der Bash-Shell können Variablen verwendet werden, um Daten zu speichern und auf sie zuzugreifen.
- Eine Variable wird mit einem Namen definiert und kann einen beliebigen Wert enthalten, z. B. eine Zeichenkette, eine Zahl oder eine Liste von Werten.
- Variablen in Bash werden in der Regel ohne explizite Typdeklaration erstellt und können jederzeit neu zugewiesen werden.
- Der Wert einer Variable kann mithilfe des Zuweisungsoperators = festgelegt und durch den Variablennamen abgerufen werden.
- Es gibt auch vordefinierte Umgebungsvariablen in Bash, die Informationen über das System oder die Shell selbst enthalten (z. B. Benutzername, aktuelles Arbeitsverzeichnis oder Hostname).
- Variablen können in Befehlen und Skripten verwendet werden, um die Flexibilität und Wiederverwendbarkeit von Code zu verbessern.
Skalare Variablen
- Eine Variable stellt einen Platzhalter dar.
- Man spricht von Variablensubstitution, wenn anstelle der Variablen deren Wert ausgegeben wird.
- Eine Variable muss – im Gegensatz zu kompilierten Programmiersprachen – nicht deklariert werden.
- Der Interpreter allokiert den Speicherplatz zur Laufzeit.
- Die Definition einer Variablen erfolgt durch Nennung, gefolgt von = und dem zugewiesenen Wert.
- Wichtig: Zwischen Variablenname, = und Wert darf kein Leerzeichen stehen.
- Es werden häufig Großbuchstaben verwendet; Bindestriche sollten vermieden werden.
Definition einer Variablen
- GLAS=bier
Ausgabe des Variableninhalts:
- echo $GLAS
bier
Beispiel einer Variablensubstitution
- UNIXSYSTEM=/usr
- ls -ld $UNIXSYSTEM
drwxr-xr-x 11 root root 4096 2008-10-29 23:58 /usr
Feldvariablen (Arrays)
- In Bash können Feldvariablen (Arrays) verwendet werden, um mehrere Werte unter einem gemeinsamen Namen zu speichern.
- Arrays werden über Indizes angesprochen und erlauben den Zugriff auf mehrere Elemente innerhalb einer Variablen.
Definition
- farbe=(blau gelb gruen rot)
Ausgabe einzelner Elemente
- echo ${farbe[0]} → blau
- echo ${farbe[1]} → gelb
- echo ${farbe[2]} → gruen
- echo ${farbe[3]} → rot
Assoziative Arrays
- Assoziative Arrays sind Schlüssel/Wert-Paare und werden ab Bash 4 unterstützt.
- Sie werden mit declare -A deklariert.
- Zugriff erfolgt über den Schlüssel: ${array[key]}.
#!/bin/bash
declare -A fruits
fruits["apple"]="red"
fruits["banana"]="yellow"
fruits["orange"]="orange"
echo ${fruits["apple"]}
fruits["grape"]="purple"
for key in "${!fruits[@]}"; do
echo "$key is ${fruits[$key]}"
done
Der Exportbefehl
- Variablen werden nicht automatisch an Kindprozesse weitergegeben.
- Mit export werden sie in die Prozessumgebung übernommen, um beim Forken auch im Kindprozess verfügbar zu sein.
- Alle exportierten Variablen können mit printenv oder env angezeigt werden.
- Alle Shellvariablen (auch nicht exportierte) werden mit set angezeigt.
Kommandosubstitution
- Die Kommandosubstitution ermöglicht, den Ausgabewert eines Befehls in einer Variablen zu speichern oder in einen anderen Befehl einzufügen.
- Zwei Varianten:
** $(Befehl) – moderne Variante, unterstützt Schachtelung ** ```Befehl``` – ältere Variante (Backticks)
Beispiele:
- cd $(echo /home/$(whoami))
- cd `echo /home/`whoami```
- MOMENT=$(date -u "+%X")
- echo $MOMENT → 09:29:58
Abgrenzen von Variablen
- Ein Dollarzeichen $ leitet eine Variablenreferenz oder Parameterexpansion ein.
- Geschweifte Klammern ${...} dienen zur Gruppierung.
Beispiele
- SUX=eins
- TUX=zwei
- SUXTUX=drei
- echo $SUX → eins
- echo ${SUX}TUX → einsTUX
- echo ${SUX}${TUX} → einszwei
Weitere Mechanismen zur Parameterexpansion
- Diese Mechanismen manipulieren Variableninhalte.
- FARBE steht dabei für den Variablennamen, rot für eine Zeichenkette oder andere Variable.
Beispiele
- ${FARBE:-rot} – Standardwert, wenn nicht gesetzt
- ${FARBE:=rot} – wie oben, zusätzlich wird FARBE belegt
- ${FARBE:?keine farbe} – Fehlermeldung, wenn FARBE nicht definiert
- ${FARBE:+rot} – liefert „rot“, wenn FARBE definiert ist
- ${FARBE:3} – Ausgabe ab Position 3
- ${FARBE:5:3} – Ausgabe von 3 Zeichen ab Position 5
- ${#FARBE} – Länge der Variablen
- ${FARBE#rot} – entfernt „rot“ am Anfang
- ${PROGRAM##*/} – entfernt längstmöglich alles bis zum letzten Slash
- ${FARBE%weis} – entfernt „weis“ am Ende
- ${FARBE%%o*} – entfernt längstmöglich ab „o“
- ${FARBE/rot/blau} – ersetzt erstes „rot“ durch „blau“
- ${FARBE//rot/blau} – ersetzt alle „rot“ durch „blau“
Wichtige Systemvariablen (Auswahl)
- PATH
Pfad, in dem nach ausführbaren Programmen gesucht wird
- HOME
Heimatverzeichnis
- BASH
Pfadname der aktuellen Shell
- PWD
Aktuelles Verzeichnis
- OLDPWD
Vorheriges Verzeichnis
- PS1, PS2, PS3
Eingabeprompts 1 – 3
- UID
Benutzerkennung
- EDITOR
Standardeditor (meist vi)
Pfad zum Postfach
- HOSTNAME
Name des Rechners
Stellungsparameter (spezielle Variablen)
- Den Stellungsparametern $1, $2, …, $9 werden bei der Definition Werte nach ihrer Reihenfolge zugewiesen.
- Der Geltungsbereich ist lokal – sie gelten nur in der aktuellen Bash und können nicht exportiert werden.
Belegen mittels set
- set der fck ist eine klasse Mannschaft
- echo $1 $2 $3 → der fck ist
- echo $5 $6 $7 → eine klasse Mannschaft
- set unser fcs ist aber auch ok
- echo $1 $2 $3 → unser fcs ist
Belegen durch Skriptaufruf
- cat skript1
#!/bin/bash
echo "1. Parameter $1"
echo "2. Parameter $2"
echo "3. Parameter $3"
echo "4. Parameter $4"
echo "alle Parameter $*"
echo "alle Parameter $@"
echo "Anzahl Parameter $#"
echo "Skriptname $0"
echo "PID des Skripts $$"
echo "Rückgabewert letztes Kommando $?"
- ./skript1 blau gruen gelb rot
Systemparameter
| $$ | PID des laufenden Prozesses |
| $! | PID des letzten Hintergrundprozesses |
| $- | Liste der für die Bash gesetzten Optionen |
| $? | Exit-Status des letzten Kommandos |
| $# | Anzahl der Stellungsparameter |
| $* | Liste aller Stellungsparameter |
| $0 | Aktueller Prozessname |
shift-Kommando
- Verschiebt alle Stellungsparameter um eine Stelle nach links.
- Beispiel:
** set hallo ihr guten admins von der schule hier ** echo $1 $2 $3 $4 → hallo ihr guten admins ** shift ** echo $1 $2 $3 $4 → ihr guten admins von ** shift 3 ** echo $1 $2 $3 $4 → von der schule hier
Aufgaben
Skalare Variablen
- Ordnen Sie der Variablen GLAS den Wert bier zu.
- Geben Sie den Wert der Variablen aus.
- Ordnen Sie einer beliebigen Variablen den Pfad zu einem Verzeichnis zu.
- Lassen Sie sich über den Variablenwert den Inhalt dieses Verzeichnisses anzeigen.
Feldvariablen
- Ordnen Sie der Variablen FARBE die Werte schwarz, rot und gold zu.
- Geben Sie jeden Wert einzeln aus.
Kommandosubstitution
- Definieren Sie den Begriff Kommandosubstitution.
- Nennen Sie beide Varianten der Kommandosubstitution.
- Was ist der Unterschied?
- Ordnen Sie die Ausgabe von date einer beliebigen Variablen zu.
- Wie kann man mit whoami in sein Home-Verzeichnis wechseln?
Abgrenzen von Variablen (Parameterexpansion)
- Definieren Sie drei Variablen, wobei die dritte sich aus den ersten beiden zusammensetzt (z. B. SUX, TUX, SUXTUX).
- Geben Sie diese Variablen in allen Abgrenzungsformen wieder.
Weitere Mechanismen zur Parameterexpansion
- Beschreiben Sie, was bei folgenden Parameterexpansionen passiert
- echo ${FARBE:-rot}
- echo ${FARBE:=rot}
- echo ${FARBE:?keine farbe}
- echo ${FARBE:+rot}
- echo ${FARBE:3}
- echo ${FARBE:5:3}
- echo ${#FARBE}
- echo ${FARBE#rot}
- echo ${PROGRAM#*/}
- echo ${FARBE%weis}
- echo ${FARBE%o*}
- echo ${FARBE/rot/blau}