2012-11-02 51 views
0

我有一個從文件「INPUT_FILE」與許多行線讀取一個shell腳本,弗里斯特幾行情況如下:shell腳本:在讀線錯誤

04fcgFs-mjA 
0DZ7DbdeOeE 
0yvHWyvexZA 
1IAhDGYlpqY 
1Vajuce8nyU 
1Y_wJR1I-9s 
2dn-ULkQl5M 
2GmVajkqLNU 
2X85PdfQqnM 
37LAPz7pnQI 

在腳本中,我有:

while read line 
do 
blabla ..... 
done< input_file 

非常有趣的是,當腳本讀取偶數行時,如第二,第四,第六,第一個字符將會丟失。例如,當它讀取第二行時,獲得的字符串是DZ7DbdeOeE,而不是0DZ7DbdeOeE

我試着寫一個簡單的腳本只有:

while read line 
do 
echo $line 
done< input_file 

然後,它可以正確讀取0DZ7DbdeOeE

由於我的shell腳本很長,我不會在這裏發佈它,但我認爲內部代碼與「input_file」無關。順便說一句,有喜歡

if [condition] 
    continue 
fi 

,所以我只是想知道什麼是該pheonomenum潛在原因的一些塊?真奇怪!

我已經張貼此鏈接中的腳本內容: http://goo.gl/Iwory

+1

我有我的疑惑。我懷疑問題是你如何使用'$ line'。 –

+0

你在'blabla .....'裏做什麼? – Yamaneko

+0

在你的大腳本的循環頂部放置'echo「$ line」',看看它是否正確。另外,如果你的shell支持這個選項,也許你可以使用'read -r'(for raw)。祝你好運。 – shellter

回答

0

東西在你blablabla從標準輸入讀取,可能是爲了看它是否是一個終端或類似的東西上。確保您在那裏運行的所有外部進程都將其stdin從/dev/null重定向。

您當然可以通過評論blablabla的部分內容並查看行爲何時發生變化來弄清楚正在做什麼。