Shell Scripting

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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

− one = seven