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