当不使用 TLS 时,变量USE_TLS
应为 unset、或为空,但当必须强制执行 TLS 时,应设置为 。我要求它默认强制执行(即设置),但如果我指定另一个变量设置为 则不需要。null
1
do_not_use_tls
1
# this assigns null or empty
USE_TLS=${do_not_use_tls:-""}
# this assigns empty or null
USE_TLS=${do_not_use_tls:+""}
是否有一个替换会在设置或未设置USE_TLS
时设置,但否则不为其赋值?我正在尝试以下操作,但这些不起作用:do_not_use_tls
null
USE_TLS=${do_not_use_tls:+${do_not_use_tls:-""}}
USE_TLS=${do_not_use_tls:-${do_not_use_tls:+null}}
答案1
你正在寻找的似乎是
unset -v USE_TLS
[ "${do_not_use_tls-}" = 1 ] || USE_TLS=1
首先取消设置USE_TLS
变量(如果您确信它不会有以前的值,则这不是严格需要的),然后将其设置为1
except $do_not_use_tls
is 1
。
或者更明确地说,
if [ "${do_not_use_tls-}" = 1 ]; then
unset -v USE_TLS
else
USE_TLS=1
fi
我使用"${do_not_use_tls-}"
而不只是为了在aka生效的"$do_not_use_tls"
情况下不生成错误。set -u
set -o nounset
您不能真正使用您所展示的示例(全部采用赋值的形式,USE_TLS
其值是do_not_use_tls
变量的某种扩展),因为您需要测试 的值$do_not_use_tls
以查看它是否是1
。