0

我正在尝试遍历一个分隔的文本文件并使用 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 的代码和随后的插入语句,脚本工作正常,只显示内容。

我相信我迭代文件的方式可能会导致它,但不确定我在这里缺少什么。

4

1 回答 1

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
于 2013-09-27T07:18:02.580 回答