このコマンドは何をしますcat t.txt >> t.txtか? t.txt に "abc123" という 1 行のテキストしかないとします。「abc123」の出力が t.txt に追加されると仮定します。つまり、「abc123」が 2 行あるはずです。ただし、無限ループに陥るだけです。Control-C を押すまで止まりません。これは >> の期待される動作ですか?
3 に答える
4
catプログラムは読み取り用にファイルを開き、ファイルを読み取り、標準出力に書き込みます。
>>シェル追加リダイレクトです。
あなたが見ているのは、次のサイクルです。
catから行を読み取りますt.txtcat行をファイルに出力します- 行が追加されます
t.txt catファイルの最後にあるかどうかをテストします
EOF チェックが発生するまでに新しい行が書き込まれているため、この 4 番目のステップは常に false になります。 cat書き込みは常に最初に行われるため、待機します。
その動作を防ぎたい場合は、間にバッファーを追加できます。
$ cat t.txt | cat >> t.txt
このようにして、書き込みはEOF のチェック後に行われます。 cat t.txt
于 2013-07-26T07:00:28.647 に答える