Bash-检查多个环境变量并列出所有缺失的变量

时间:2018-07-27 16:12:10

标签: bash shell devops

我正在处理一些脚本,在其中需要检查一些环境变量并列出所有遗漏的变量。我看到很多帖子会检查并退出。

if [ -z "$BLAH" ]; then
    echo "Missing BLAH"
    exit 1
fi

但是,我想打印所有丢失的内容,然后在未设置任何内容的情况下退出。我现在正在做类似的事情,还有其他更优雅的方法吗?

function check_env_vars {
  status=0
  for name in $*; do
    value="${!name}"
    echo "$value"
    if [[ -z "$value" ]]; then
      echo "$name environment variable must not be empty"
      status=1
    fi
  done
  return $status
}

if [[ check_env_vars "BLAH" "BLAH1" "BLAH2" -ne 0 ]]; then
  exit 1
fi

赞赏任何想法或想法。

1 个答案:

答案 0 :(得分:1)

if已经检查了退出状态;首先就是[[ ... ]]

if ! check_env_vars "BLAH" "BLAH1" "BLAH2"; then
    exit 1
fi

也就是说,bash已经具有用于验证变量是否已设置且非空的语法:

check_vars () {
  for name; do
    : ${!name:?$name must not be empty}
  done
}