PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BASH: Wann ein ; verwenden, wann net?



qeldroma
19-10-2003, 18:18
Z.B.

if [cat datei]; then

Wann gehört ein ; hiner einen Ausdruck in [] ?

sagi
19-10-2003, 19:46
ein ";" ersetzt einen Zeilenumbruch. Also solte nach jedem Befehlaufruf (und dessen Parametern) eins stehen, solange du nicht in einer Pipe bist. dann nur nach dem letzten.

mfg
c.

Hans-Georg Normann
19-10-2003, 23:49
Original geschrieben von qeldroma
if [cat datei]; then

Mehrere Befehle in eine Zeile geschrieben werden durch ; getrennt. Hast dir natürlich ein schönes Beispiel herausgesucht. Das then muß normalerweise in der Zeile nach den if stehen. Ich bevorzuge aber auch deine Schreibweise.

Mit deinem Beispiel wirds trotzdem nix, weil der ersten eckigen Klammer ein Leerzeichen folgen muss und der schließenden Klammer muss eines vorrausgehen.

if [ -f /etc/hosts ];then
echo "gefunden"
else
echo "nicht gefunden"
fi

qeldroma
20-10-2003, 00:07
Dann ist also [....] eine Zeile für sich?! Ok, hingenommen. Danke

RapidMax
20-10-2003, 01:36
Das "["-Zeichen ist ein synonym für test. Das erlaubt die Schreibweise "[ AUSDRUCK ]" anstelle von test. Bezüglich der Portierbarkeit sollte man test verwenden. Für nicht extrem portierbare Scripte verwende ich dennoch lieber "[]".

Das "if" testet, ob das folgende Kommando mit dem Exit-Status 0 (= true) zurückkehrt. Dadurch kannst du auch andere Programme mit "if" testen. Um z.B. das Vorkommen eines Ausdruckes in einer Datei zu testen verwende ich oft:

if grep -q "hanswurst" "$file"; then
echo "gefunden"
else
echo "nicht gefunden"
fi

Gruss, Andy