Shellscripte

Aufgaben und Beispiele

1. Was leistet das Shellscript?

#!/bin/bash
i=0
erg=0
while [ $i -le 10 ]
    do
     echo "Tabelle: $i *X "
      j=0
      while [ $j -le 10 ]; do
       let erg=($i*$j);
       # let erg= $i * $j
       echo "$i * $j = $erg"
       let j=j+1
    done
    echo "------------------------"
     let i=i+1
done
exit 0

Lassen Sie das Script unter Linux laufen.

2. Was leistet das folgende Script?
#!/bin/bash
echo "Ausgabe1: $#"
echo "Ausgabe2: $0"
while [ $# -ne 0 ]
      do
          echo $1
          shift
      done
exit 0

Lassen Sie das Script laufen und ergänzen Sie jede Zeile um eine Kommentarzeile mit einer entsprechenden Beschreibung.

3. Was leistet das folgende Script?
#!/bin/bash
clear
echo "Auswahl"
echo "1) /sbin"
echo "2) /bin"
echo "3) /usr/sbin"
echo "4) /usr/bin"
echo echo "Eingabe \c"
read antw
status=0
case "$antw" in
      1) ls -C /sbin;;
      2) ls -C /bin;;
      3) ls -C /usr/sbin;;
      4) ls -C /usr/bin;;
      *) echo "unknown directory"
          status=1 ;;

 esac
exit $status

4.Was leistet das folgende Script?
 #!/bin/bash
if [ $# -ne 2 ]; then
      echo "Usage: $0 Quelle Ziel"
       exit 1
fi
zno=1
cat $1 | while read zeile 
    do
          echo -e "$zno \t: $zeile"
          let zno=zno+1 
     done > $2
echo "Ausgabe"
cat $2
exit 0

Erweitern Sie das Script so, dass es wahlweise mit den  Optionen  -n, -t, -s und -z  aufgerufen werden kann. Die Bedeutung der Optionen seien hierbei:
-n übernehme die Zeilennummer wie oben
-t als erste Zeile soll das Datum geschrieben werden
-s zusätzlich soll in der ersten Zeile noch die Grösse der Datei angegeben werden 
-z die Anzahl der Zeilen der Datei soll in die erste Zeile geschrieben werden.

 5. Schreiben Sie ein Shellscript nach den folgenden Angaben:
Das Script kann mit beliebig vielen Parametern in der Shell aufgerufen werden. <Script> <Param1> <Param2> .....

-Falls dem Script keine Parameter übergeben werden, wird ein Hilfetext ausgegeben, der die korrekte Nutzung des Scriptes erläutert.

-Alle Parameter werden nacheinander überprüft, ob sie Verzeichnisnamen sind, falls ja dann werden die Dateien in diesen
Verzeichnissen mit ls -l aufgelistet. Falls der Parameter kein Verzeichnis ist, dann erfolgt eine Meldung nach dem folgendem Muster:
Das Verzeichnis <Name> existiert nicht.

Bsp. bei Aufruf von <Script> /etc /home /unsinn
werden die Verzeichnisse /etc /home aufgelistet, dann erfolgt die Meldung „Das Verzeichnis /unsinn existiert nicht“.