我试图获取“ user”和“ 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
答案 0 :(得分:1)
在变量分配中的字符串周围加上双引号,以便在其中扩展变量。
doc="mongo <<END
use DATABASE
db.auth('$user', '$pw')
db.collection.find()
END
"