Hier die versprochene Übersicht zu den Shell Scripting Grundlagen.
Dieser Artikel ist eigentlich nur eine Erweiterung zum einstieg in die Konsole
Dort werden die Kommandos erklärt hier nur ein kurzer Überblick über Funktionen, Kontrollstrukturen, Benutzereingaben usw.
Also…
Ein bisschen Shellscript zum schnellen nachschauen:
Magic: #!/bin/sh
…
Variablen
Zuweisung
variablenname=wert
abrufen dann mit
$variablenname
Reservierte Variablen
$0
Scriptname
$#
Anzahl übergebener Parameter
$1 $2
Parameter 1 2
$*
alle Parameter
$@
alle Parameter
"$@"
alle Parameter in „“
$$
PID der Shell
$-
aktuelle Shell-Optionen
$?
Return Code des letzten Befehls
$!
PID des zuletzt in den Hintergrund geschobenen Prozesses
in der bash(!) es gibt noch einige nicht POSIX Systemvariablen (z.B. $RANDOM ) die auch brauchbar sein können. Dazu später mehr in einem extra Artikel.
Eingabe / Ausgabe
read
read x
Benutzereingabe abwarten und in Variable x schreiben
echo
echo -n
Kein Zeilenumbruch nach Ausgabe
echo -e
Spezialzeichen benutzen:
printf
printf
Kommt aus der C Funktion printf und und kann sehr gut Texte Formatieren.
Das steht in der man printf
genaueres dann unter man 3 printf
^^
Abstände angeben, Ersetzungen, einfügen etc..
Spezielle Zeichen
\b
Backspace.
\c
Folgende Ausgabe unterdrücken
\f
Formularvorschub
\n
Zeilenumbruch
\r
Enter
\t
Tabulator (horizontal)
\v
Tabulator (vertical)
\0..
Zeichen für angegeben Oktalwert ausgeben
\x..
für hex
\u....
Unicode 4 HEX ISO 10646
\u........
Unicode 8 HEX
\\
Backslash
Funktionen
Ertellen
funktionsname() {
echo "argument1: $1 argument2: $2"
}
Ausführen
funktionsname argument1 argument2
Kontrollstrukturen
Gruppen
[ ]
Gruppe (Die Leerzeichen um die Klammern sind in der Shell wichtig!)
Operatoren
&&
und
||
oder
Strings
"x" = "x"
gleich
"x" != "x"
ungleich
-z "x"
ist leer
-n "x"
ist nicht leer
INT
n1 -eq n2
gleich
n1 -ne n2
ungleich
n1 -gt n2
größer als
n1 -ge n2
größer gleich
n1 -lt n2
kleiner als
n1 -le n2
kleiner gleich
Prüffunktionen
while
Kopfgesteuert
i=0
while [ "$((++i))" -lt 10 ]
do
echo "$i"
done
Fußgestuert
i=0
while
echo "$i"
[ "$((++i))" -lt 10 ]
do :; done
for
text="start mitte ende"
for i in $text
do
echo $i
done
break
Schleifenausführung unterbrechen
continue
Schleifenausführung in nächster Runde fortsetzen
if
if [ "wahr" != "falsch" ]
then
echo "Stimmt."
elif [ "wahr" == "falsch" ]
then
echo "Nein."
else
echo "Egal."
fi
case
case "ja" in
j*|J*)
echo "Ja!" ;;
n*|N*)
echo "Nein" ;;
*)
echo "Keine Ahnung" ;;
esac
Schreibe einen Kommentar