Shell脚本:读行错误时
我有一个shell脚本,它从一个文件“input_file”中读取了很多行,前几行如下:Shell脚本:读行错误时,shell,Shell,我有一个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 然后它可以正确读取0DZ7DbdeOeE 由
04fcgFs-mjA
0DZ7DbdeOeE
0yvHWyvexZA
1IAhDGYlpqY
1Vajuce8nyU
1Y_wJR1I-9s
2dn-ULkQl5M
2GmVajkqLNU
2X85PdfQqnM
37LAPz7pnQI
在脚本中,我有:
while read line
do
blabla .....
done< input_file
然后它可以正确读取0DZ7DbdeOeE
由于我的shell脚本很长,我不在这里发布它,但我认为内部代码与“input_文件”无关。顺便说一句,有些街区像
if [condition]
continue
fi
所以我只想知道这种性高潮的潜在原因是什么?真奇怪
我已在此链接中发布了脚本内容:
您的
blabla
中的某些内容正在读取stdin,可能是为了查看它是否在终端或类似的设备上。确保在其中运行的所有外部进程的stdin都已从/dev/null
重定向
当然,你可以通过评论你的
blablabla
的部分,看看行为何时改变,来弄清楚这是怎么回事。我有疑问。我怀疑问题在于如何使用$line
。你在blabla中做什么…
?将回音“$line”
放在大脚本的循环顶部,看看它是否正确。另外,如果您的shell支持该选项,那么您可以使用read-r
(对于raw)。祝你好运。文件是温多泽寄来的吗?可能在行尾有一个模糊字符的\r
。使用dos2unix
在我的大脚本中,我将echo“$line”放在循环的顶部,结果正如我在原始帖子中所说的
if [condition]
continue
fi