Как войти, если переменная окружения не установлена? - PullRequest
2 голосов
/ 19 октября 2011

Как мне написать сценарий оболочки, который проверяет переменную среды и записывает в файл журнала, если переменная не установлена?

Ответы [ 3 ]

4 голосов
/ 19 октября 2011

Если вам нужно только сообщение, когда оно не установлено, то:

if [ -z "${CHOSEN_ENV_VAR}" ]
then echo "CHOSEN_ENV_VAR was not set but should have been" >> log.file
fi

Если вы просто хотите, чтобы скрипт остановился и отправил отчет о stderr, тогда:

: ${CHOSEN_ENV_VAR:?'was not set but should have been'}

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

3 голосов
/ 19 октября 2011

Команда для записи в журнал: logger.И вы проверяете, установлена ​​ли переменная с test -v, поэтому в вашем скрипте должны быть строки:

if test ! -v VARNAME; then logger Variable VARNAME is unset; fi

EDIT : если вы имеете в виду под log просто произвольный журналфайл, а не системный журнал, вы, конечно, можете заменить регистратор на echo bla bla> log.file.

1 голос
/ 20 октября 2011

[ -z "$name" ] проверяет, является ли name пустым.Чтобы проверить, не установлено ли оно, используйте [ -z "${name+isset}" ].

check() {
  if [ -z "${name+isset}" ]; then
    echo "name is unset"
  elif [ -z "$name" ]; then
    echo "name is empty"
  else
    echo "name is non-empty"
  fi
}
name=me; check name
name=; check name
unset name; check name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...