csh идиомы для проверки существования переменных среды? - PullRequest
30 голосов
/ 25 февраля 2010

У меня есть несколько сценариев 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 лучше. Меня особенно интересует более элегантное решение, чем то, что я использую сейчас.

Ответы [ 2 ]

20 голосов
/ 25 февраля 2010

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

0 голосов
/ 28 августа 2014

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

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

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