Shell-Programmierung

Damit das Shellscript als bash-Script gekennzeichnet wird schreiben wir in die erste Zeile.

#!/bin/bash

Kommandos können mit ; abgeschlossen werden. Kommandofolgen werden mit ; getrennt.

Variablen:


$Variablenname
${Variablenname}     Shellvariable
${#Variablenname}  gibt die Anzahl der Zeichen der Shellvariablen an
$1, $2, ... $9    Parameter, die dem Shellscripts übergeben wurden
$0  Name des Shellscripts
$# Anzahl der Shellparameter
$@ Alle Kommandozeilenparameter

Variablenname=Wert 
setzt die Variable auf einen Wert.

Ein- und Ausgabe

read [-p Prompt] [Varname ...]
Mit -p kann optional ein Satz ausgegeben werden.

read -p "Eingabe zweier Werte:" var1 var2 liest mehrere Variablen ein.
echo [Varname ...]
gibt die Variable aus.

echo $var1 $var2
gibt die Variablen var1 und var2 dann wieder aus.

Bedingung

test

if Bedingung
then
  Aktion
  Aktion
  ...
else 
  ...
fi


if test ...
if [ ...]  definiert eine Bedingung ...

Beispiele
if [ $1 -eq 20 ]; falls der 1.Parameter = 20
if [ $1 -gt 20 ]; falls der 1.Parameter > 20
if [ $1 -lt 20 ]; falls der 1.Parameter < 20
(analog le (<=), ge(>=), ne (!=))
if  [ "$1" = "UN" ]; falls $1 gleich UN
if test -f file; falls das File file existiert.
if test -e datei; falls die Datei file existiert.
if test -d directory; falls das Verzeichnis directory existiert.
Die Verneinung eines Ausdrucks erfolg mit !
if  [ "$1" != "UN"]; falls $1 ungleich UN
if  [ $1 > 2 -a  $1<10 ]; falls 2 < $1 <10, -a für UND-o für ODER

case-Anweisung

case Variable in ...
  Muster1) Kommando1 ;;
  Muster2) Kommando2 ;;
  Muster3) Kommando3 ;;
  ...
  *) SonstKommando ;;
esac

Schleifen

while [ Ausdruck ]
do
  Kommandos...
done

for Variable in Liste
do
  Kommandos...
done


Beispiel
#!/bin/bash
for i  in $@ 
do
  echo $i
done

Gib alle an das Script übergebenen Parameter aus.

Shellfunktionen

function Funktionsname()
{
  Kommando1
  ...
}


Beispiel
#!/bin/bash

function zaehle_von_bis()
{
  i= $1 # i bekommt den Wert des ersten Parameters
  while [ $i -le $2 ]
# Solange i kleiner/gleich Parameter2
  do
    echo $i
# Ausgabe der Zahl i
    let i=$i+1 # i wird um 1 erhöht
  done
}

# Das Hauptprogramm

read -p "Startwert: " zahl1
# Startwert einlesen
read -p "Endwert: " zahl2
# Endwert einlesen
zaehle_von_bis $zahl1 $zahl2
# Aufruf der Funktion mit den gelesenen Werten