2014-02-25 94 views
1

我正在bash脚本中运行一些mongodb命令,但需要在heredoc文本中插入一个字符串。我无法正确插入值。这将如何完成?将变量插入到bash脚本中mongodb命令heredoc

today=`date -d "00:00:00" +%s` 
todaytime=$(($today*1000)) 
mongo <<EOF > test 
    use log 
    db.translogs.remove("{Dt: {$lt: new Date($todaytime)}}") 
    exit 
EOF 

回答

0

我不知道,但它看起来像$lt is part of a query而不是一个shell变量。但在你的代码中,shell在将here-doc传递给mongo之前试图扩展它。所以,我认为,所有你需要做的就是逃避$$lt

 
today=`date -d "00:00:00" +%s` 
todaytime=$(($today*1000)) 
mongo test 
    use log 
    db.translogs.remove("{Dt: {\$lt: new Date($todaytime)}}") 
    exit 
EOF 

如果我在上面的代码cat更换mongo,我们看到了命令,要被送到mongotest文件:

 
    use log 
    db.translogs.remove("{Dt: {$lt: new Date(1393315200000)}}") 
    exit