我在shell腳本中使用IFS
變量來解析某些數據(數據已經以給定格式提供給我)。由於默認IFS是空格/製表符/等,我使用字符'¬'
分隔輸入文件行中的字段。該數據是一樣的東西腳本中的IFS變量問題使用Unicode
14352345¬AFSFDG1234¬text¬(http://www.google.com,3)(http://www.test.com,2)¬(www.test2.com,4)¬123-23432
我創建了一個腳本,管道文件到使用IFS變量使用while循環:
#!/bin/bash;
while IFS=¬ read -r sessionId qId testResults realResults queryId;
do echo $sessionId; done < inputFile
(這個循環裏面我做一些實際的awk處理與另一文件)。
發生什麼事是,如果我手動運行這個文件(只是./file),它完美的工作。如果我將它作爲腳本(cron)的一部分或在另一個腳本中運行,我會得到解析錯誤,這表明我的IFS變量未被使用。我試着拷出舊的IFS變量並在解析後重置,以及傳入IFS變量的不同方式(¬
,'¬'
,$'¬'
等,但似乎沒有幫助)。
任何指針/提示將不勝感激。
更新:經過一些額外的調試,原來的問題是awk的語句,而不是分隔
謝謝你。我實際上採取了不同的建議,並使用了一些非Unicode分隔符! – DOS 2011-03-07 14:49:19