有没有自动引用参数扩展的bash模式?

有没有自动引用参数扩展的bash模式?

我有一个名为的脚本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 中是否有一种模式可以在参数扩展期间自动添加引号?

相关内容