首页 > 解决方案 > Bash - 添加到空格的单引号

问题描述

我有以下内容:test.ini

BUILD_ARGS='--build-arg user="test user" --build-arg pass=testPass'

测试.sh

#!/bin/bash
set -x
source test.ini
docker build -t test:test ${BUILD_ARGS} .

test.sh 的输出

+ source test.ini
++ BUILD_ARGS='--build-arg smb_user="test user" --build-arg smb_pass=testPass '
+ docker build -t test:test --build-arg 'user="test' 'user"' --build-arg pass=testPass .

为什么在“test”和“user”之间要添加额外的单引号?我希望该命令被执行为:

docker build -t test:test --build-arg user="test user" --build-arg pass=testPass .

标签: bashdockerstring-interpolation

解决方案


参数需要构造为数组:

BUILD_ARGS=(--build-arg user="test user" --build-arg pass="testPass")

docker build -t test:test "${BUILD_ARGS[@]}"

推荐阅读