0

多くの行を含むファイル「input_file」から行を読み取るシェルスクリプトがあります。最初の数行は次のとおりです。

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

スクリプトには、次のものがあります。

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

スクリプトが偶数行を読み取ると、2 番目、4 番目、6 番目などの最初の文字が欠落するのは非常に興味深いことです。たとえば、2 行目を読み取ると、取得される文字列はDZ7DbdeOeEではなく0DZ7DbdeOeEです。

私は次のものだけで簡単なスクリプトを書こうとしました:

while read line
do
echo $line
done< input_file 

その後、正しく読み取ることができます0DZ7DbdeOeE

私のシェルスクリプトは非常に長いので、ここには掲載しませんが、内部のコードは「input_file」とは何の関係もないと思います。ところで、次のようなブロックがいくつかあります

if [condition]
  continue
fi

では、この現象の潜在的な原因は何かを知りたいだけですか? とても奇妙です!

スクリプトの内容を次のリンクに投稿しました: http://goo.gl/Iwory

4

1 に答える 1

0

あなたの何かがblablabla標準入力から読み取っています。おそらく、それが端末上にあるかどうかを確認するためです。そこで実行するすべての外部プロセスが、標準入力が からリダイレクトされていることを確認してください/dev/null

もちろん、あなたのセクションをコメントアウトしblablabla、動作がいつ変化するかを見ることで、それが何をしているのかを理解することができます.

于 2012-11-02T22:21:28.007 に答える