在Shell脚本中使用MongoDB的结果

9

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

调用方式如下:

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

在mongoscript.js文件中,有一条打印语句打印出了我想在shell脚本中使用的值“foo”。问题是当我执行上述语句时,会得到以下输出:
b
foo

而不仅仅是 'foo'

因此,如果我这样做

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

res包含两行。

当然,我可以用以下方式解决

res=`mongo ... |tail -n 1`

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

谢谢!

1个回答

8
超出需求的输出是由于你赋值a='b'导致的,在这种情况下,它会显示赋值结果。
如果你在变量赋值时加上var关键字,就不会有额外的输出(并且仍然可以在你的脚本中使用变量a)。
$ mongo --quiet --eval "var a='b'" mongoscript.js
foo

您可以在mongo shell中看到相同的行为:
> a='b'
b
> var a='b'
>

太好了!谢谢,我猜想应该有这么简单的东西存在。 - Nodebody

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接