0

我有一个shell脚本,它从文件“input_file”中读取多行,前几行如下:

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

所以我只想知道这种现象的潜在原因是什么?太奇怪了!

我已经在这个链接中发布了脚本内容:http: //goo.gl/Iwory

4

1 回答 1

0

您的某些blablabla内容正在从标准输入读取,可能是为了查看它是否在终端上或类似的东西上。确保您在那里运行的所有外部进程都将其标准输入从/dev/null.

blablabla您当然可以通过注释掉您的部分并查看行为何时发生变化来弄清楚它在做什么。

于 2012-11-02T22:21:28.007 回答