以下是可能出现问题的代码:
while IFS=',' read -r field1 field2 field3
do
mongo mydb --eval 'db.mycollection.insert({"field1": "$field1", "field2": "$field2", "field3": "$field3"})'
done < myfile.csv
将字段值放入双引号中来避免语法错误:
while IFS=',' read -r field1 field2 field3
do
mongo mydb --eval "db.mycollection.insert({'field1': '$field1', 'field2': '$field2', 'field3': '$field3'})"
done < myfile.csv
在Bash脚本中,双引号会解析变量,而单引号则不会。因此,我们需要将整个字符串放在双引号中,并且将字段值放在单引号中,以便语法正确。