我有一个如下的脚本,我正在mongodb中运行查询。但当我将其作为函数调用时,它会添加单引号,并且我的查询不起作用。我该如何解决这个问题?
我的代码:
mongo_func() {
mongo "$MONGO/$1" --quiet --eval $2 $3 $4
}
mongo_func "Users" 'db.ucol.updateMany({}, { $unset : {"name" : "", "Users": ""}});'
当我使用bash-x进行调试时,输出如下所示。
mongo 10.10.1.2/Users --quiet --eval 'db.ucol.updateMany({},' '{$unset:' '{"name"' : '"",' '"Users":' '""}});'
它正常工作如下。
mongo 10.10.1.2/Users --quiet --eval 'db.ucol.updateMany({}, {$unset: {"name" : "", "Users": ""}});'
这是因为您未能引用函数参数。
试试这个。
mongo_func() {
user=$1
shift
mongo "$MONGO/$user" --quiet --eval "$@"
}