mongo eval不评估通过env变量给出的eval表达式

时间:2014-08-06 22:28:39

标签: bash mongodb environment-variables eval mongo-shell

我正在尝试制作一个“包装器”bash别名函数来评估mongo片段

alias mongoshelleval=mongoshelleval
mongoshelleval(){
    mongo --verbose --eval $1 $db
    }

我将片段存储为env变量

export delsessions='"db.sessions.drop()"'

我执行的事情

mongoshelleval $delsessions

但它没有执行操作。它只是

  

$ mongoshelleval $ desessions
      MongoDB shell版本:2.4.8
      Thu Aug 07 03:50:18.809 versionArrayTest通过了       连接到:db
      Thu Aug 07 03:50:18.861创建新连接:127.0.0.1:27017
      Thu Aug 07 03:50:18.867 BackgroundJob start:ConnectBG
      8月07日03:50:18.870连接连接!
      db.sessions.drop()
      Thu Aug 07 03:50:18.880释放1个未收集的类mongo :: DBClientWithCommands对象

不抛出任何错误。只需打印参数db.sessions.drop()

即可

会议仍在那里

  

$ mongoshell
      MongoDB shell版本:2.4.8
      连接到:db
  db.sessions.find()
      {“_ id”:“yr5rxguSbb32Q880Jj36Rq2_uU
      {“_ id”:“9PQh_ml5Gloiaunv6pbgVevM_6
      {“_ id”:“OacGUyf-V1DcTQIg3lMgFXUL-N
      {“_ id”:“GC7gh09iqVUny9HM8gnGl9Hzxt
      {“_ id”:“_ f4koE0tagJ7vwuU76BatcDeEb
      {“_ id”:“t1CX_eqi7FcCREfBB2X5CpgOcz

为什么它没有按照我的意图去做,如果不执行查询,为什么不抛出任何错误?

1 个答案:

答案 0 :(得分:0)

你有一对额外的报价。尝试

export delsessions="db.sessions.drop()"

例如,以下内容适用于我

mongo> db.sessions.find()
{ "_id" : ObjectId("53e5078d5b8b40be16223165"), "a" : 1 }
mongo> exit
bye

bash$ export test="db.sessions.drop()"
bash$ mongo --eval $test
MongoDB shell version: 2.6.3
connecting to: test
true
bash$ mongo

mongo> db.sessions.find()
// nothing

我增加了我的>和$提示我是否在mongo shell或bash shell中,为了更加清晰。