我试图遍历分隔的文本文件,并使用shell脚本将它们插入到mysql数据库表中。
#!/bin/bash
while IFS='|' read val1 val2 val3
#cat testfile.txt | while read line
do
#val1=`echo $line | cut -d'|' -f1`
#val2=`echo $line | cut -d'|' -f2`
#val3=`echo $line | cut -d'|' -f3`
echo $val1 $val2 $val3
/usr/local/mysql/bin/mysql --host=127.0.0.1 --user=root --password= test << EOF
insert into addressTable(street,city,zip)values('$val1','$val2','$val3')
EOF
done < testfile.txt
testfile.txt的内容为
abc|xyz|123
def|uvw|456
在运行脚本时,我收到./testMySQL.sh: line 12: syntax error: unexpected end of file
错误。
如果我注释掉连接到mysql和后续insert语句的代码,脚本工作正常,只显示内容。
我相信我迭代文件的方式可能会导致它,但不知道我在这里缺少什么。
答案 0 :(得分:0)
话说:
while IFS='|' read val1 val2 val3
导致设置变量val1
,val2
,val3
(假设您的输入符合您所描述的形式)。
评论或删除以下行应解决问题:
val1=`echo $line | cut -d'|' -f1`
val2=`echo $line | cut -d'|' -f2`
val3=`echo $line | cut -d'|' -f3`
如果您说过,则需要上述行:
while read line
而不是
while IFS='|' read val1 val2 val3