shell脚本:如何检查环境变量是否存在,并获取其值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (37)

我在写一个shell脚本。在这个shell脚本中,我有一个变量,它要么接受默认值,要么接受环境变量的值。但是,环境变量不一定存在。

例如,假设在运行脚本之前,我执行以下操作:

export DEPLOY_ENV=dev

如何告诉脚本搜索这个环境变量,并将其值存储在脚本中的一个变量中。此外,我如何告诉脚本,如果这个环境变量不存在,就存储一个默认变量?

提问于
用户回答回答于
if [[ -z "${DEPLOY_ENV}" ]]; then
  MY_SCRIPT_VARIABLE="Some default value because DEPLOY_ENV is undefined"
else
  MY_SCRIPT_VARIABLE="${DEPLOY_ENV}"
fi

# or using a short-hand version

[[ -z "${DEPLOY_ENV}" ]] && MyVar='default' || MyVar="${DEPLOY_ENV}"

# or even shorter use

MyVar="${DEPLOY_ENV:-default_value}"
用户回答回答于

你可以用参数展开:

${参数:-word}如果参数的展开为unset或null。被取代了。否则,参数被取代了。

所以试试这个:

var=${DEPLOY_ENV:-default_value}

还有${参数-Word}窗体,它仅在下列情况下替换默认值:参数未设置(但当它为空时)。

为了说明两者之间的区别:

$ unset DEPLOY_ENV
$ echo "'${DEPLOY_ENV:-default_value}' '${DEPLOY_ENV-default_value}'"
'default_value' 'default_value'
$ DEPLOY_ENV=
$ echo "'${DEPLOY_ENV:-default_value}' '${DEPLOY_ENV-default_value}'"
'default_value' ''

扫码关注云+社区