Bash 根据环境变量的存在,将条件开关应用于docker build命令

Bash 根据环境变量的存在,将条件开关应用于docker build命令,bash,Bash,我正试图清理一些关于构建Docker映像的CI/CD代码。有鉴于此,能够根据环境变量的存在有条件地将一些开关应用于docker build命令将非常有用。我想到的是: docker build \ --cache-from ${INPUT_IMAGE}:latest \ --tag ${INPUT_IMAGE}:${INPUT_IMAGE_TAG} \ --tag ${INPUT_IMAGE}:latest \ "${INPUT_TARGET:+'--target' \"\$IN

我正试图清理一些关于构建Docker映像的CI/CD代码。有鉴于此,能够根据环境变量的存在有条件地将一些开关应用于
docker build
命令将非常有用。我想到的是:

docker build \
  --cache-from ${INPUT_IMAGE}:latest \
  --tag ${INPUT_IMAGE}:${INPUT_IMAGE_TAG} \
  --tag ${INPUT_IMAGE}:latest \
  "${INPUT_TARGET:+'--target' \"\$INPUT_TARGET\"}" \
  ${INPUT_CONTEXT}
如第5行所示,如果存在
INPUT\u target
环境变量,我希望有条件地应用
target
开关。但是,每次我构建Docker时,Docker都会抱怨“Docker build”只需要一个参数。,我怀疑这表明开关在应用过程中受到了损坏


如何根据存在的
INPUT\u target
环境变量有条件地将
--target
开关应用到命令?

您不能引用表达式。在引号中,它不会进行分词,因此会作为一个参数
--目标值
呈现给docker,而不是
--目标值

docker build \
  --cache-from "${INPUT_IMAGE}:latest" \
  --tag "${INPUT_IMAGE}:${INPUT_IMAGE_TAG}" \
  --tag "${INPUT_IMAGE}:latest" \
  ${INPUT_TARGET:+--target ${INPUT_TARGET}} \
  "${INPUT_CONTEXT}"
PS:当你在错误的地方引用时,你错过了所有其他地方的引用:)我已经添加了它们