Die IF Schleife – Linux Tutorium Part6

Comments: No Comments
This page has hierarchy - Parent page: Linux Tutorium

Die IF Schleife bzw IF Abfrage in der Shell – Linux Tutorium Part6

Die üblichen verdächtigen wenn es ums Thema Bedienungen und Schleifen geht sind ja bekannt, die meist benutze ist wohl die IF-Abfrage

Die if-Abfrage bei der Shell Programmierung ist jedoch etwas gewöhnungsbedürftig
Jedoch, was wäre ein Computer ohne sie? Nicht viel! Daher muss man sich wohl damit anfreunden!

if [ $var1 Bedingung $var2 ]
then
"tuewas"
elfi
than
"tuewasanderes"
else
"tuenochwasanderes"
fi

sieht komisch aus, geht aber noch komischer!

if test $var1 Bedingung $var2

Also für Zeile eins hat man also zwei Möglichkeiten, nochmal der Hinweis, achtet auf die Leerzeichen!!
Hier beginnt die If-Abfrage. Für Bedienung gibt es mehrere Möglichkeiten aber dazu gleich.
Der Befehl then muss leider auch immer sein.
Der Befehl elfi steht für elseif und gibt die Möglichkeit wenn das erste nicht eingetroffen ist nochmal auf etwas zweites, drittes usw. zu Prüfen.
Der Befehl else gibt an was er tun soll wenn die Bedienung bei if nicht eintraf.
Und zu guter Schluss man man dem ganzen noch sagen das hier ende ist. Hierzu benutzt man “fi”, warum “fi”? weil es “if” Rückwerts ist. Bei den anderen Schleifen geht dies genauso!

Im Feld Bedienung gibt es eine Vielzahl von Möglichkeiten.
Für Dezimalzahlen gibt es hier:

if test $var1 -eq $var2 #Equals also ob die Zahlen gleich sind, Achtung es geht auch "=" dies liefert jedoch bei "010 = 10" Falsch!
if test $var1 -ne $var2 #gegenteil von Equals, eben "not equal",
if test $var1 -gt $var2 #Zeigt Wahr wenn "var1 > var2" also bei var1 größer als var2,
if test $var1 -ge $var2 #Zeigt Wahr wenn "var1 >= var2", also größer oder gleich,
if test $var1 -le $var2 #Wird Wahr wenn "var1 <= var2",also kleiner gleich,

Für andere Vergleiche, z.B. auf Dateien gibt es auch noch Befehle, dazu aber später.

Ein kleines Programm mit der IF-Abfrage in der Shell
Also ohne Beispiel ist das oben echt schwer verständlich, wie wärs wenn wir am Additionsprogramm weiter arbeiten?
Bauen wir ganz einfach eine Abfrage ein ob es auch wirklich genau zwei Argumente sind die hier übergeben wurden!

#!/bin/bash
if test $# -eq 2
then
a=$(expr $1 \+ $2)
echo $a
else
echo "leider wurde eine falsche Anzahl an Parametern übergeben"
fi

if-abfrage bei der shellprogrammierung
Wie oben schon erwähnt, das ist jetzt die eine schreibe weiße, das mit den "Eckigen-Klammern" würde natürlich auch gehen.
Wichtig ist das nach dem "if" ein "then" kommt sonst macht er gar nichts.
Zugemacht werden muss das ganze am Ende natürlich auch wie schon beschrieben.



So nun zu den Variablen die nichts mit Dez. Zahlen zu tun haben.
Da sind zum einen Abfragen auf Dateien.

if test -r Dateiname #gibt Wahr, wenn sie exisitert und lesbar für den Benutzer der es abfragt,
if test -w Dateiname #gibt Wahr, wenn sie für den Benutzer beschreibbar ist,
if test -x Dateiname #gibt Wahr, wenn sie vom Benutzer ausführbar ist,
if test -d Dateiname #gibt Wahr, wenn es ein Verzeichnis ist,
if test -f Dateiname #gibt Wahr, wenn es eine Datei ist,
if test -s Dateiname #gibt Wahr, wenn sie existiert und länger als 0 Zeichen ist.

Und dann sind da noch die Abfragen auf Strings (=Zeichenketten, PS: Für dies nicht wissen, ab jetzt bleib ich bei Strings und erwähne das übersetze Wort nicht mehr :-) )

if test -z String #ist Wahr, wenn der String  Leer ist (Länge =0)
if test n String # ist Wahr wenn der String nicht Leer ist (Länge =!0)
if test String1 = String2 # Strings sind gleich --> Wahr. Achtung 10 und 010 ist hier ungleich!
if test String1 != String2 # Testet auf Ungleich --> Wenn verschieden ist sie Abfrage Wahr.

Natürlich kann man auch mehrere Bedienungen auf einmal abfragen. Hierfür gibt es "-o" und "-u", das "-o" steht für oder, das "-u" für und.

if test \( -f Dateiname \) -o \( -d Dateiname \)

Testet also ob die Datei oder der Ordnet "Dateiname" in Form eines Ordners oder einer Datei existiert.

No Comments - Leave a comment

Leave a comment

Your email address will not be published. Required fields are marked *

*


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Welcome , today is Thursday, August 28, 2014