Javascript 带变量的Bash和mongodb脚本求值

Javascript 带变量的Bash和mongodb脚本求值,javascript,linux,bash,mongodb,shell,Javascript,Linux,Bash,Mongodb,Shell,我正在尝试使用mongodb shell脚本和bash的组合创建一个添加用户函数,如下所示: (猛击) adduser.js现在只是一个空脚本,我需要将变量放入该脚本中: email(username): regre name: reger password: ergher role (customer/merchant): reg var email='regre', hashedPassword='Vql40+ypE8cVoDw5jPEs0s+YbycG+pzjPVBRMIROJ/+XqiD

我正在尝试使用mongodb shell脚本和bash的组合创建一个添加用户函数,如下所示: (猛击)

adduser.js现在只是一个空脚本,我需要将变量放入该脚本中:

email(username): regre
name: reger
password: ergher
role (customer/merchant): reg
var email='regre', hashedPassword='Vql40+ypE8cVoDw5jPEs0s+YbycG+pzjPVBRMIROJ/+XqiDHc7UD0aZeKY2/enKdSC3V8qMwmLJNc3D67VPHVQ==', role='reg', name='reger', salt='9QgI52o2zgIH8RORVeg1Eg==';
Tue Sep 23 00:39:03.210 SyntaxError: Unexpected end of input
脚本回显$as的值,这看起来是正确的,但mongodb shell脚本似乎无法计算此表达式

如何将此表达式从bash成功传递到mongodb shell脚本进行评估?


当我像这样调用mongo shell脚本时,不会出现错误:

mongo --nodb --quiet --eval "var email='regre', hashedPassword='Vql40+ypE8cVoDw5jPEs0s+YbycG+pzjPVBRMIROJ/+XqiDHc7UD0aZeKY2/enKdSC3V8qMwmLJNc3D67VPHVQ==', role='reg', name='reger', salt='9QgI52o2zgIH8RORVeg1Eg==';" adduser.js

不确定这是否是问题所在,但在脚本上传递mongo的完整路径总是好的

在命令行上:

which mongo

将脚本中的单词mongo替换为收到mongo命令的完整路径,错误在这里-您没有向mongo引擎提供任何javascript代码进行评估!
--eval
后面的值应该是有效的javascript代码。但您提供的只是一些纯文本

正确的命令应该是:

mongo --nodb --quiet --eval "db.addUser(userAdditionDocument)"
{ user: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ],
  writeConcern: { <write concern> }
}
userAdditionDocument
将是:

mongo --nodb --quiet --eval "db.addUser(userAdditionDocument)"
{ user: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ],
  writeConcern: { <write concern> }
}
{用户:“”,
pwd:“,

customData:{.

添加引号是否有帮助:即
mongo--nodb--quiet--eval“$as”adduser.js
为什么不使用驱动程序或只是将js文件传递给mongo?我想用bash脚本中获得的参数从bash动态调用mongodb脚本mongo在我的路径中并且脚本可以执行,问题在于bash变量的计算我猜表达式是:“var email='$email',hashedPassword='$passHash',role='$role',name='$name',salt='$salt';"如果对bash变量求值,javascript是否有效?我在这里尝试的是通过eval功能执行mongo shell脚本和init变量OK…我知道你在尝试做什么。不幸的是,这个想法到今天还不能实现。比喻来说,你想让一个人在工作时说两种语言只知道一个。看看这个答案: