我有一个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
答案 0 :(得分:1)
Shell变量不会在单引号内扩展。使用双引号:
mongo "$MONGO_DATABASE" --eval "printjson...ISODate(2016-04-${i}T09:26:31.190Z)
然后,您需要在您正在评估的字符串中转义双引号的用法,例如: \"created_at\"
。您还需要逃避$
的其他用法,例如\$lte
。
或者,您可以在整个命令周围使用单引号,然后使用以下内容:
mongo "$MONGO_DATABASE" --eval 'printjson...ISODate(2016-04-'"$i"'T09:26:31.190Z)
即。关闭单引号,连接shell变量(在双引号内),然后重新打开单引号。