2010-02-25 2 views
29

У меня есть несколько CSH сценариев, где мне нужно, чтобы проверить, что некоторые переменные окружения установлены, прежде чем начать делать вещи, так что я такого рода вещи:csh идиомы для проверки существования переменной окружения?

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

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

который много печатать. Есть ли более элегантная идиома для проверки того, уже установлена ​​ли переменная среды?

Примечания:

  • This question очень похож, но конкретно спрашивает о решениях в Баш.
  • Я не ищу, чтобы люди советовали мне держаться подальше от csh, потому что это было проклято, страшно или баш лучше. Меня особенно интересует более элегантное решение, чем то, что я сейчас использую.
+0

[Этот новый, подобный вопрос] (http://stackoverflow.com/questions/13343392/how-to-check-if-an-environment-variable-is- либо-unset-or-set-to-the-empty-stri) также показывают, как проверить контекст выражения, где if/else/endif невозможно. – cfi

ответ

19

Я думаю, что так, как вы это делаете (в if заявление с условием, используя синтаксис $?VAR, который имеет значение 1, если переменная установлена, и 0 в противном случае) является, вероятно, наиболее идиоматических csh конструкция, которая делает что ты хочешь.

-4

Попробуйте следующее:

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

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

Непонятно, что вы пытаетесь сказать здесь - у вас есть два противоположные части логики печатают одно и то же сообщение. –

+1

В любом случае это не csh – supergra

Смежные вопросы