我正在检查用于读取CSV文件的shell脚本,然后将数据插入到数据库中。读取CSV时,shell脚本读取命令如何处理未使用的列?
脚本有类似
#!/bin/bash
FILENAME='MyFile.csv'
OLDIFS=$IFS
IFS=,
LINE=0
while read foo bar baz boo
do
LINE=$(($LINE+1));
if [ $LINE != 1 ]
then
if [ -z "$bar" ]
then
bar=-1
fi
if [ -z "$baz" ]
then
baz=-1
fi
if [ -z "$boo" ]
then
boo='NULL'
fi
fi
done <$FILENAME
IFS=$OLDIFS
如果我的CSV文件结构
foo, bar, baz, boo, zee, wee
1, 2, 3, 4, 5, 6
7, 8, 9, 10, 11, 12
如何read
反应不会在最后两列阅读的结构?我假设数据只是被忽略,并且在循环的每次迭代期间,只有前四列被读入变量?
我也找不到if fi
陈述中有关-z
的任何信息,我假设它代表“如果值等于零”?
不要全局更改'IFS'的值;只需将其前缀添加到'read'命令即可。 '而IFS =,读foo bar baz boo; do'。 – chepner