我正在尝试获取“用户”和“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/