在shell脚本中使用mongodb的结果

时间:2014-02-04 13:13:09

标签: bash mongodb shell

我正在尝试在bash脚本中使用参数化MongoDB脚本文件中打印的结果。

电话看起来像这样:

mongo --quiet server/db --eval "a='b'" mongoscript.js

在mongoscript.js中有一个print语句打印我要在shell脚本中使用的值'foo'。问题是,当我执行上述语句时,我得到:

b
foo

而不只是'foo'

因此,如果我这样做

res=`mongo --quiet server/db --eval "a='b'" mongoscript.js`

res包含两行。

我当然可以用

来解决这个问题
res=`mongo ... |tail -n 1`

但我希望有更通用的方法来避免这种多余的输出。

谢谢!

1 个答案:

答案 0 :(得分:6)

多余的输出是您分配a='b'的结果,它会在此上下文中显示分配的结果。

如果为变量赋值添加var关键字,则不应该有任何额外的输出(并且仍然可以在脚本中使用变量a):

$ mongo --quiet --eval "var a='b'" mongoscript.js
foo

您可以在mongo shell中看到相同的行为:

> a='b'
b
> var a='b'
>