0

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

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

我将片段存储为 env 变量

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

我执行的事情

mongoshelleval $delsessions

但它不执行操作。这只是

$ mongoshelleval $delsessions
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 开始:ConnectBG
Thu Aug 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

为什么它不做我打算做的事情,如果它不执行查询,为什么它不抛出任何错误?

4

1 回答 1

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 中。

于 2014-08-08T17:25:46.427 回答