我正在处理一些脚本,在其中需要检查一些环境变量并列出所有遗漏的变量。我看到很多帖子会检查并退出。
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
赞赏任何想法或想法。
答案 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
}