GNU/Linux >> Linux の 問題 >  >> Linux

リダイレクトに関連するシェルでの実行順序は、システム上の1000のうち約1回動揺しますか?

リダイレクションに関連するシェルでの実行順序に関するこのQ&Aを考慮し、ファイルが存在しない場合は最初に作成されるため、 cat example.txt | shuf> example.txt ファイルが存在しないことを文句を言わない-それは私が理解していることから順序を確認するだけです-それならなぜ私がこれを行うと私のシステムで約1000回ごとにシャッフルが機能するのですか(バックアップにはそれぞれ15の静的な値が含まれています彼らのライン)

for i in $(seq 1 1000); do
    cp backup test
    echo $i
    cat test | shuf > test
    cat test
done

ルールに例外があるように見えるのはどうしてですか?

承認された回答:

ここ:

cat test | shuf > test

> これが意味する意味で優先されます:

(cat test) | (shuf > test) 

ではない:

(cat test | shuf) > test

2つの異なるファイルを使用した場合でも、これら2つのグループに違いはありません。

同じファイルを使用する場合に重要になるのは、パイプの両側にある2つのコマンドが同時に実行されることです。 。これらのコマンドはcattest およびshuf>test > cat に対して、「書き込みと切り捨てのために開く」を意味します 「読み取り用に開く」、読み取り、および閉じる予定です。これらの2つのことが同時に起こっているので 、それらの集合的な操作の順序間の関係は不確定 catの可能性があります シェルがshuf>testを管理する前にファイルを丸呑みします それを切り捨てます。しかし、もっと関与しているので、それはわずかなチャンスです。 catの場合にのみ発生します shuf>テストのスケジュールに関しては非常に幸運です 。

ストーリーの道徳: これは行わないでください。代わりに2つのファイルを使用してください。


Linux
  1. Linux でデフォルトのシェルを変更する方法

  2. シェルでプログラムの実行時間を取得する

  3. システムに搭載されているハードディスクを確認するにはどうすればよいですか?

  1. LinuxシステムのIDを変更する方法

  2. Linux –システムに搭載されているハードディスクを確認する方法は?

  3. Linux マシンのハードウェアに関する詳細を調べるにはどうすればよいですか?

  1. Korn Shellでリターンステータスをキャプチャし、同時にTシャツを使用するにはどうすればよいですか?

  2. Awkからファイルをキャットする方法は?

  3. Gnome Shellアクティビティバーを常に小さくするにはどうすればよいですか?