bash - 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 .
解决方案
参数需要构造为数组:
BUILD_ARGS=(--build-arg user="test user" --build-arg pass="testPass")
docker build -t test:test "${BUILD_ARGS[@]}"
推荐阅读
- github - 减小 pytorch 库的大小
- reactjs - 是否可以在父组件上显示道具?
- java - 片段中的这个关键字没有得到实现,而
- reactjs - 尽管存在数据,但内容未显示 - React
- c# - 如何使用 DI 创建一个我通过路由导航到的页面实例?
- numpy - pycuda - memcpy_dtoh,没有给出似乎已设置的内容
- ibm-doors - 批量使用 ibm-doors 中的元音变音或特殊字符
- javascript - 将光标移动到 Intellij Idea 或 Visual Studio Code IDE 中最近的特定符号
- javascript - 如何仅使用 JavaScript/Ajax 使用匹配的下拉选项执行文本框搜索
- ruby-on-rails - 使用不同的文件名附加 ActiveStorage blob