如果未设置环境变量,如何记录?

时间:2011-10-19 06:15:28

标签: linux bash shell unix scripting

如何编写用于检查环境变量的shell脚本,如果未设置该变量,则写入日志文件?

3 个答案:

答案 0 :(得分:4)

如果您只想要取消设置的消息,那么:

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'}

(您可以在交互式shell中测试它,但交互式shell不会退出。将它放在脚本中并退出脚本。)

答案 1 :(得分:3)

写入日志的命令是logger。 并且您测试变量是否设置为test -v,因此在您的脚本中您必须有以下行:

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

编辑:如果您的日志只是一个任意日志文件而不是系统日志,您当然可以用echo bla bla>替换记录器。 log.file。

答案 2 :(得分:1)

[ -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