2013-03-28 5 views
0

Используя этот сценарий UNIX Я могу проверить, если переменная TEST_VAR установлен или нет:Проверка переменной среды

: ${TEST_VAR:?"Not set or empty."} 

Я новичок в UNIX, так может кто-то пожалуйста, объясните, что эта команда.

ответ

1

От bash руководства:

${parameter:?word} 

Если параметр является нулевым или отключенным, разложение слова (или сообщение , что эффект, если слово нет) записываются в стандартные ошибки и оболочка, если она не является интерактивной, завершает работу. В противном случае заменяется значение параметра.

1

Это оригинальная нотация комментария оболочки (до '#' до конца строки). В течение долгого времени сценарии оболочки Bourne имели двоеточие в качестве первого символа. C Shell прочитает скрипт и использует первый символ, чтобы определить, была ли она для оболочки C (хеш «#») или оболочки Bourne (двоеточие «:»). Затем ядро ​​вступило в действие и добавило поддержку «#!/Path/to/program», а оболочка Bourne получила комментарии «#», а конвенция с двоеточием прошла на обочине

Посмотрите на эту аналогичную статью вопрос:

What's a concise way to check that environment variables are set in a Unix shell script?

+0

вы ошибаетесь. В примере с плагином это просто команда «:» (в большинстве команд оболочки действует как команда «nop», но вы можете заставить ее предшествовать/следовать за такими вещами, как здесь: за ней следует параметр $ {: ? word}. Таким образом, это «(ничего не делать) $ {TEST_VAR:?« Не задано или пусто ».}: он будет просто« проверять », если существует TESTVAR, и выйти с сообщением об ошибке (на stderr), если нет На самом деле вы не ошибаетесь: команда «:», вероятно, является потомком той вещи, о которой вы говорили, и существует также по причинам совместимости. –

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