bash - 在 bash 脚本中添加单引号
问题描述
我正在运行以下 bash 脚本。当我使用带有空格的变量时,当我使用它们时,会添加单引号。这不是我期望的结果。
我的脚本:
#!/bin/bash -x
KEY="x"
VALUE="b c"
VARS="$KEY=\"$VALUE\""
KEY="y"
VALUE="d e"
VARS="$VARS $KEY=\"$VALUE\""
env $VARS printenv
当我在调试模式下运行它时,我得到了这个结果
+ KEY=x
+ VALUE='b c'
+ VARS='x="b c"'
+ KEY=y
+ VALUE='d e'
+ VARS='x="b c" y="d e"'
+ env 'x="b' 'c"' 'y="d' 'e"' printenv
env: c": No such file or directory
但我需要以下结果:
env 'x="b' 'c"' 'y="d' 'e"' printenv
如何防止添加单引号?
当我运行这条线时,它运行良好:env x="b c" y="d e" printenv
谢谢
解决方案
您需要引用该$VARS
变量,因为它包含空格:
#!/bin/bash -x
KEY="x"
VALUE="b c"
VARS="$KEY=\"$VALUE\""
KEY="y"
VALUE="d e"
VARS="$VARS $KEY=\"$VALUE\""
env "$VARS" printenv
推荐阅读
- python - 为什么我无法将我的 python 代码放入 csv 文件?
- c# - 我需要帮助为这个问题创建一个循环
- javascript - 如何在 timeupdate 事件中获取 currentTime(应用和绑定)
- kubernetes - 无法向 API 服务器注册节点“节点名称”:未经授权
- swift - 我想从外部添加一个 UILabel 到我图书馆的收藏视图单元格
- google-cloud-platform - 将 ShareDataset 与 BigQuery 结合使用时是否存在任何性能问题或限制?
- javascript - 在 css 中提交 Eslint 错误时
- java - 在最小化和取消最小化之前无法调整内部框架的大小
- regex - Vim - E488 错误 - 搜索和替换命令中的尾随字符
- ios - Paytm 控制台在 Swift 4 中出现 404 错误