Wie um zu überprüfen, ob eine Umgebungsvariable ist entweder nicht gesetzt oder auf die leere Zeichenfolge gesetzt?

Möchte ich nicht tcsh verwenden, aber leider haben Sie keine Wahl in dieser situation. Also bitte keine "verwenden Sie eine andere shell" Antworten!

Ich versuche momentan, um zu überprüfen, dass eine Umgebungsvariable festlegen, und dass es etwas nützlich. Also, was ich tun will, ist dies:

if ($?HAPPYVAR && $HAPPYVAR != "") then
    ... blah...
else if ($?SADVAR && $SADVAR != "") then
    ... more blah ...
endif

Das problem ist, dass wenn $HAPPYVAR nicht gesetzt ist, wird ein Fehler ausgegeben, der auf die zweite Hälfte des Ausdrucks (da die Umgebungsvariable Austausch geschieht zu früh). Ich konnte mit geschachtelten ifs, aber dann hätte ich Probleme damit, meine "else", um korrekt zu arbeiten (ich würde über ein weiteres set env var zu sagen, ob "...bla..." passiert ist oder nicht).

Jemand hat eine schöne, saubere Lösung, um dies zu tun?

  • während der Arbeit auf dem gleichen Konzept fand ich, dass mein Skript nicht verarbeiten if-block , es nur sagen, dass HAPPYVAR: undefined variable und beendet , wie kann ich machen, damit es funktioniert, so dass es ausgeführt wird, wenn block ?
InformationsquelleAutor spookypeanut | 2012-11-12
Schreibe einen Kommentar