我正在檢查用於讀取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