sh / bash wenn sonst Anweisung

8

Ich möchte die if else -Anweisung in sh scripting

verstehen

Also schrieb ich das folgende, um herauszufinden, ob JAVA_HOME in der Umgebung eingestellt ist oder nicht , ich schrieb das folgende Skript

%Vor%

Dies ist meine Ausgabe in env

%Vor%

aber ich bekomme unter Ausgabe

%Vor%     
abi1964 11.08.2011, 04:42
quelle

4 Antworten

13

Sie stoßen auf eine dumme Begrenzung der Art, wie sh Argumente erweitert. Zeile 3 Ihres Skripts wird erweitert zu:

%Vor%

Welche sh kann nicht herausfinden, was zu tun ist. Versuchen Sie diesen hässlichen Hack für die Größe:

%Vor%

Beide Argumente müssen nicht leer sein, also werfen wir einfach ein x in beide und sehen was passiert.

Alternativ gibt es einen separaten Operator zum Testen, wenn eine Zeichenfolge nicht leer ist:

%Vor%

( -z testet, ob die folgende Zeichenfolge leer ist.)

    
duskwuff 11.08.2011, 04:48
quelle
1

Die -n und -z -Tests sollten hier verwendet werden:

%Vor%     
Stuart Powers 11.08.2011 05:05
quelle
1

Beachten Sie, dass Sie, wenn Sie feststellen möchten, ob eine Variable gesetzt ist, wahrscheinlich weder if / else noch test ([) verwenden möchten. Es ist eher typisch für Dinge wie:

%Vor%

oder

%Vor%

oder

%Vor%     
William Pursell 12.08.2011 13:22
quelle
1
%Vor%     
Kracekumar 11.08.2011 04:47
quelle

Tags und Links