我正在尝试制作一个“包装器”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
为什么它没有按照我的意图去做,如果不执行查询,为什么不抛出任何错误?
答案 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中,为了更加清晰。