2010-02-25 11 views
29

Tengo unos cuantos scripts CSH en las que necesito para comprobar que ciertas variables de entorno se establecen antes de empezar a hacer cosas, por lo que este tipo de cosas:modismos csh para comprobar la existencia de una variable de entorno?

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

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

que es un montón de escribir. ¿Hay una expresión más elegante para verificar si una variable de entorno ya está configurada o no?

Notas:

  • This question es bastante similar, pero se pregunta específicamente acerca de las soluciones en bash.
  • No estoy buscando personas que me aconsejen que me mantenga alejado de csh porque está maldito, da miedo o bash es mejor. Estoy específicamente interesado en una solución más elegante que la que estoy usando ahora.
+0

[Este nuevo, pregunta similar] (http://stackoverflow.com/questions/13343392/how-to-check-if-an-environment-variable-is- bien-unset-or-set-to-the-empty-stri) también muestra cómo verificar en un contexto de expresión donde if/else/endif no es posible – cfi

Respuesta

19

Creo que la forma en que lo está haciendo (una declaración if con una condición utilizando la sintaxis $?VAR, que evalúa a 1 si se establece la variable, y 0 en caso contrario) es probablemente la más idiomática csh constructo que hace Lo que quieras.

-4

intente lo siguiente:

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

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

No está claro lo que estás tratando de decir aquí - tienes dos piezas opuestas de lógica que imprimen el mismo mensaje. –

+1

En cualquier caso, esto no es csh – supergra

Cuestiones relacionadas