如果我在bash中使用函数,则会出现单引号问题



我有一个如下的脚本,我正在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 "$@"
}

相关内容

  • 没有找到相关文章

最新更新