我正在尝试在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`
但我希望有更通用的方法来避免这种多余的输出。
谢谢!
答案 0 :(得分:6)
多余的输出是您分配a='b'
的结果,它会在此上下文中显示分配的结果。
如果为变量赋值添加var
关键字,则不应该有任何额外的输出(并且仍然可以在脚本中使用变量a
):
$ mongo --quiet --eval "var a='b'" mongoscript.js
foo
您可以在mongo
shell中看到相同的行为:
> a='b'
b
> var a='b'
>