Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mongodb查询中嵌入bash变量_Bash_Mongodb - Fatal编程技术网

在mongodb查询中嵌入bash变量

在mongodb查询中嵌入bash变量,bash,mongodb,Bash,Mongodb,我有一个bash变量$I,它必须嵌入到mongo shell查询中,以便通过比较日期来获取数据 i=10 while [ "$i" -lt 12 ]; do mongo $MONGO_DATABASE --eval 'printjson(db.mycollection.find({"created_at":{"$lte":ISODate(2016-04-\"$i\"T09:26:31.190Z)}}).toArray())' > $OUTPUT_DIRECTORY/$FI

我有一个bash变量
$I
,它必须嵌入到mongo shell查询中,以便通过比较日期来获取数据

i=10
while [  "$i" -lt 12 ]; do
        mongo $MONGO_DATABASE --eval 'printjson(db.mycollection.find({"created_at":{"$lte":ISODate(2016-04-\"$i\"T09:26:31.190Z)}}).toArray())' > $OUTPUT_DIRECTORY/$FILE_NAME  
done

上面的实现给出了
i:command not found

Shell变量没有在单引号中展开。使用双引号:

mongo "$MONGO_DATABASE" --eval "printjson...ISODate(2016-04-${i}T09:26:31.190Z)
然后,您需要在正在计算的字符串中转义双引号的用法,例如
\“created\u at\”
。您还需要避开
$
的其他用法,例如
\$lte

或者,您可以在整个命令周围使用单引号,然后使用如下内容:

mongo "$MONGO_DATABASE" --eval 'printjson...ISODate(2016-04-'"$i"'T09:26:31.190Z)
i、 e.关闭单引号,连接shell变量(在双引号内),然后重新打开单引号