2010-02-25 14 views
29

Mam kilka skryptów CSH gdzie muszę sprawdzić, że niektóre zmienne środowiskowe są ustawione zanim zacznę robić rzeczy, więc robię tego rodzaju rzeczy:Idiomy csh w celu sprawdzenia istnienia zmiennych środowiskowych?

if ! $?STATE then 
    echo "Need to set STATE" 
    exit 1 
endif 

if ! $?DEST then 
    echo "Need to set DEST" 
    exit 1 
endif 

który jest dużo pisania. Czy istnieje bardziej elegancki idiom dla sprawdzenia, czy zmienna środowiskowa jest już ustawiona?

Uwagi:

  • This question jest dość podobna, ale specjalnie prosi o rozwiązaniach w bash.
  • Nie szukam ludzi, którzy doradzą mi trzymać się z dala od csh, ponieważ jest przeklęty, przerażający lub bash jest lepszy. Interesuje mnie bardziej eleganckie rozwiązanie niż to, z którego teraz korzystam.
+0

[Nowsza podobny zapytania] (http://stackoverflow.com/questions/13343392/how-to-check-if-an-environment-variable-is- albo-unset-or-set-to-the-empty-stri) pokazuje również, jak sprawdzić kontekst wyrażenia, w którym przypadku/else/endif nie jest możliwe – cfi

Odpowiedz

19

Myślę, że sposób to robisz (AN if oświadczenie o stanie przy użyciu składni $?VAR, który ocenia na 1, jeżeli zmienna jest ustawiona, a 0 w przeciwnym przypadku) jest prawdopodobnie najbardziej idiomatyczne csh konstrukt, który robi czego chcesz.

-4

Spróbuj:

[ -z STATE ] && echo "Need to set STATE" 

[ ! -z DEST ] && echo "Need to set STATE" 
+1

Nie jest jasne, co próbujesz tu powiedzieć - masz dwa przeciwległe elementy logiki drukujące tę samą wiadomość. –

+1

W żadnym wypadku nie jest to csh – supergra