我有一个名为的脚本render.sh
,如下所示:
#!/usr/bin/env bash
if [[ -f "${ENVIRONMENT}.yaml" ]]; then
ENV_YAML="-f ${ENVIRONMENT}.yaml"
fi
set -x
helm3 template "$SERVICE_NAME" . --namespace="$NAMESPACE" \
${ENV_YAML:-} \
--set environment="$ENVIRONMENT"
它两次源自更大的脚本:
SERVICE_NAME=a
NAMESPACE=b
ENVIRONMENT=foo
source render.sh
# other code
SERVICE_NAME=a
NAMESPACE=b
ENVIRONMENT=bar
source render.sh
输出如下所示:
++ helm3 template a . --namespace=b -f foo.yaml --set environment=foo
...
++ helm3 template a . --namespace=b '-f bar.yaml' --set environment=bar
在第二次执行中,添加了引号。我知道 bash 有几种不同的方法来自动添加引号,例如${VAR@Q}
和"$@"
,但似乎没有一个在使用。
bash 中是否有一种模式可以在参数扩展期间自动添加引号?