csh идиомы для проверки существования переменной окружения?

У меня есть несколько сценариев csh, где мне нужно проверить, установлены ли определенные переменные среды, прежде чем я начну что-то делать, поэтому я делаю такие вещи:

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

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

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

Примечания:

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

person Pete    schedule 25.02.2010    source источник
comment
В этом более новом, похожем вопросе также показано, как проверить контекст выражения, где if / else / endif невозможно.   -  person cfi    schedule 01.10.2015


Ответы (2)


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

person Jim Lewis    schedule 25.02.2010

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

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

[ ! -z DEST  ] && echo "Need to set STATE"
person David Thomas Sr.    schedule 28.08.2014
comment
Непонятно, что вы здесь пытаетесь сказать - у вас есть две противоположные части логики, выводящие одно и то же сообщение. - person nobody; 28.08.2014
comment
В любом случае это не csh - person supergra; 03.04.2015