0

このコマンドは何をしますcat t.txt >> t.txtか? t.txt に "abc123" という 1 行のテキストしかないとします。「abc123」の出力が t.txt に追加されると仮定します。つまり、「abc123」が 2 行あるはずです。ただし、無限ループに陥るだけです。Control-C を押すまで止まりません。これは >> の期待される動作ですか?

4

3 に答える 3

4

catプログラムは読み取り用にファイルを開き、ファイルを読み取り、標準出力に書き込みます。

>>シェル追加リダイレクトです。

あなたが見ているのは、次のサイクルです。

  1. catから行を読み取りますt.txt
  2. cat行をファイルに出力します
  3. 行が追加されますt.txt
  4. catファイルの最後にあるかどうかをテストします

EOF チェックが発生するまでに新しい行が書き込まれているため、この 4 番目のステップは常に false になります。 cat書き込みは常に最初に行われるため、待機します。

その動作を防ぎたい場合は、間にバッファーを追加できます。

$ cat t.txt | cat >> t.txt

このようにして、書き込みはEOF のチェック後に行われます。 cat t.txt

于 2013-07-26T07:00:28.647 に答える