bash - 在作为另一个命令一部分的Heredoc中解析变量

标签 bash kubernetes mongo-shell

我正在尝试获取“用户”和“pw”变量,以用单引号引起来的heredoc进行解析,因为它是较大命令的一部分。我相信如此处所述
Using variables inside a bash heredoc
这个问题是由于包括“END”部分在内的整个命令周围都有单引号引起的,但是我没有看到一种将整个命令都用引号引起来的替代方法,因为heredoc是作为kubernetes中的单个参数传递给mongo shell的。代码如下:

#!/bin/bash

user="theUser"
pw="thePW"

doc='mongo <<END
use DATABASE
db.auth("$user", "$pw")
db.collection.find()
END
'
value=$(kubectl exec -it mongo-pod -- bash -ec "$doc")

echo $value

最佳答案

在变量分配中的字符串周围加上双引号,以便在其中扩展变量。

doc="mongo <<END
use DATABASE
db.auth('$user', '$pw')
db.collection.find()
END
"

关于bash - 在作为另一个命令一部分的Heredoc中解析变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975274/

相关文章:

linux - 检查文件是否在循环中创建,如果不是,则在下一次迭代时再次创建

python - 别名 :/usr/local/bin/pip3: not found, 但 .bashrc 是正确的

kubernetes - 准备探测失败 : Get http://10. 32.1.71 :80/setting s: net/http: request canceled (Client. 等待 header 时超时)

kubernetes - 如何将子域设置为 kubernetes pod?

mongodb - MongoServerSelectionError : connection <monitor> to <MyIP> closed

bash - 这两个 Bash 命令有什么区别?

bash - 从标准输入解码多个 base64 字符串

validation - Kubernetes client-go 库是否包含用于验证 json/yaml 文件的功能?

java - 如何使用现有集合 mongodb 中的计算数据创建新集合

mongodb 初始加载 - 即时构建 DBRef