Die eckigen Klammern entsprechen dem in der Shell eingbauten Befehl "test" -- übrigens ein guter Grund, eigene Programme niemals "test" zu nennen.
Wenn $a gleich $b dann tu c kann man also z.B wie folgt schreiben:
Code: Select all
if test "$a" = "$b"
then
c
fi
if [ "$a" = "$b" ]
then
c
fi
[ "$a" = "$b" ] && c
etc. etc.
Der test-Befehl macht etwas mit seinen Argumenten und liefert "0" oder "nicht 0" zurück. "if" seinerseits vergleicht nur auf "0" oder "nicht 0". Genauso macht das "&&".
Du kannst statt test auch jeden anderen Befehl nehmen, der "0" oder "nicht 0" zurückliefert. Üblicherweise liefern Befehle "0" zurück, wenn sie erfolgreich beendet werden konnten. Oft gesehenes Beispiel
Code: Select all
$ ./configure && make && sudo make install
Also ./configure ausführen, falls dies geklappt hat, make ausführen, falls dies geklappt hat sudo make install ausführen.
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.