|
>>4479 68user >わたくしのまわりには Solaris がないので試せませんが、これは何が原因で >最終行が表示されないのでしょうか? パイプを使用した場合と同様、サブシェルで動作する事が原因のようです。 Solaris8のshで確認した所、forkしてからサブシェルの中でファイルを オープンしていました。 (ksh/bash/zshはサブシェルで動作しないので問題なし。) |
|
>>4480 zsh >パイプを使用した場合と同様、サブシェルで動作する事が原因のようです。 >Solaris8のshで確認した所、forkしてからサブシェルの中でファイルを >オープンしていました。 サブシェルで動作するとは、子プロセスでシェル起動しているというこ ですか。 whileの前に exec 0<file.txt を入れないと、最終行が表示されないということですか。 |
|
>>4480 zsh あー、なるほど。 >>4467 68user > 補足。Solaris の sh では >> while read -r line; do >> done < file.txt > でもダメなようですね のことですね。別件かと勘違いしておりました。 |
|
>>4481 お >サブシェルで動作するとは、子プロセスでシェル起動しているというこ >ですか。 その通りです。 >whileの前に >exec 0<file.txt >を入れないと、最終行が表示されないということですか。 サブシェル(while)内で use_buf=1 としても、親シェルには引き継がれないので 最後の if 文が必ず偽になります。 よって、最終行(最終行が半角スペースで始まる場合には最終 2 行)が 表示されないと思います。 |