Bash: Unterschied zwischen den Versionen
Zeile 1: | Zeile 1: | ||
+ | == Funktionen == | ||
+ | Eine Funktion muss im Code VOR dem Aufruf stehen. | ||
+ | === Funktion mit Parametern === | ||
+ | Eine solche Funktion wird aufgerufen wie ein Skript auf der Kommandozeile, d.h. die Parameter werden durch Leerzeichen getrennt und stehen innerhalb der Funktion mit den üblichen Variablen für Skrip-Parameter zur Verfügung: <tt> $# $* $Q </tt>. Die Parameter werden also nicht per Variablenname übergeben sondern als Positionsparameter. | ||
+ | #Deklaration | ||
+ | function foo () { | ||
+ | echo Parameter: $@ | ||
+ | } | ||
+ | #Aufruf | ||
+ | foo(-a -p --dry-run) | ||
+ | |||
+ | #Ausgabe: | ||
+ | Parameter: -a -p --dry-run | ||
+ | Man kann also innerhalb einer Funktion nicht direkt auf die Aufrufparameter des Scripts, in welchem die Funktion verwendet wird, zugreifen. | ||
== Variablen Zuweisung == | == Variablen Zuweisung == | ||
Zu einer bestehenden Variablen etwas hinzufügen | Zu einer bestehenden Variablen etwas hinzufügen | ||
Zeile 6: | Zeile 20: | ||
echo $var | echo $var | ||
Hello world | Hello world | ||
+ | |||
== IP Adresse aus Domainname extrahieren == | == IP Adresse aus Domainname extrahieren == | ||
host grfe.dyndns.org | awk '/has address/ { print $4; exit}' | host grfe.dyndns.org | awk '/has address/ { print $4; exit}' |
Version vom 19. November 2021, 18:08 Uhr
Funktionen
Eine Funktion muss im Code VOR dem Aufruf stehen.
Funktion mit Parametern
Eine solche Funktion wird aufgerufen wie ein Skript auf der Kommandozeile, d.h. die Parameter werden durch Leerzeichen getrennt und stehen innerhalb der Funktion mit den üblichen Variablen für Skrip-Parameter zur Verfügung: $# $* $Q . Die Parameter werden also nicht per Variablenname übergeben sondern als Positionsparameter.
#Deklaration function foo () { echo Parameter: $@ } #Aufruf foo(-a -p --dry-run)
#Ausgabe: Parameter: -a -p --dry-run
Man kann also innerhalb einer Funktion nicht direkt auf die Aufrufparameter des Scripts, in welchem die Funktion verwendet wird, zugreifen.
Variablen Zuweisung
Zu einer bestehenden Variablen etwas hinzufügen
var="Hello" var+=" world"
Ausgabe
echo $var Hello world
IP Adresse aus Domainname extrahieren
host grfe.dyndns.org | awk '/has address/ { print $4; exit}' # Beispielausgabe: 91.114.189.118
Rechnungen durchführen
a=1 let c=$a+5 echo $c
Ausgabe:
6
Skript über SSH ausführen
ssh <host> 'bash -s --' < irgendein_script.sh parameter_1 parameter_2 ...
Das Skript ist lokal gespeichert, wird aber remote über SSH ausgeführt.
Die zwei Minuszeichen bedeuten, dass hier die Parameterliste für das Kommando bash zu Ende ist.
Shebang
Der Shebang legt fest, mit welcher Shell das Script interpretiert werden soll.
#!/bin/bash
Der Shebang muss in der ersten Zeile des Scriptes stehen, also auch vor irgendwelchen Kommentaren und Beschreibungen