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

时间:2018-08-22 21:17:53

标签: bash kubernetes mongo-shell

我试图获取“ 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

1 个答案:

答案 0 :(得分:1)

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

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