首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带变量的Bash和mongodb脚本计算

带变量的Bash和mongodb脚本计算
EN

Stack Overflow用户
提问于 2014-09-23 13:31:21
回答 2查看 1.1K关注 0票数 1

我试图使用mongodb脚本和bash的组合来创建一个add用户函数,它看起来如下(Bash)

代码语言:javascript
复制
function addUser {
    read -p "email(username): " email
    read -p "name: " name
    read -p "password: " password
    read -p "role (customer/merchant): " role
    salt=$(node node/getSalt)
    passHash=$(node node/getHash salt password)
    export as="var email='$email', hashedPassword='$passHash', role='$role', name='$name', salt='$salt';"
    echo $as
    mongo --nodb --quiet --eval $as adduser.js
}

adduser.js只是一个空脚本,现在我需要把变量放到这个脚本中。

代码语言:javascript
复制
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脚本似乎无法计算这个表达式。

如何成功地将这个表达式从bash传递到mongodb脚本以进行计算?

当我像这样调用mongo脚本时,没有错误:

代码语言:javascript
复制
mongo --nodb --quiet --eval "var email='regre', hashedPassword='Vql40+ypE8cVoDw5jPEs0s+YbycG+pzjPVBRMIROJ/+XqiDHc7UD0aZeKY2/enKdSC3V8qMwmLJNc3D67VPHVQ==', role='reg', name='reger', salt='9QgI52o2zgIH8RORVeg1Eg==';" adduser.js
EN

回答 2

Stack Overflow用户

发布于 2014-09-23 13:48:29

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

在命令行上:

代码语言:javascript
复制
which mongo

将脚本上的单词mongo替换为所收到的mongo命令的完整路径。

票数 0
EN

Stack Overflow用户

发布于 2014-09-23 14:32:07

错误就在这里--您没有将任何javascript代码提供给mongo引擎进行评估!--eval后面的值应该是有效的javascript代码。但你提供的只是一些纯文本。

正确的命令是:

代码语言:javascript
复制
mongo --nodb --quiet --eval "db.addUser(userAdditionDocument)"

userAdditionDocument将是:

代码语言:javascript
复制
{ user: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ],
  writeConcern: { <write concern> }
}

正如您可能已经知道的,您只需将整个userAdditionDocument复制到上面的命令,代码就会正常工作。

这个完整的信息是可用的这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25996483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档