2017-12-07 17 views
0

ファイルを開いてその内容を実行したコマンドの出力にする方法は?たとえば、

/オープン/var/command_result.txtを読み取るしたがって、各時間/var/command_result.txtを読み取る/開放され、その内容はsysctl -x -B 16 kern.arandom.

の実行結果であるだろう、コンテンツが異なる乱数あります。

おかげ

+0

私はこれを行う良い方法はないと思います。単純なスクリプトが受け入れられない理由はありますか? –

+1

'ln -s/dev/urandom/var/command_result.txt'はおそらく?それはリンクを置くための奇妙な場所ですが、テキストを生成しません。 – tripleee

+0

@ジョンムーン、再:単純なスクリプトは受け入れられません。時には、私たちがコントロールできないことに対応する必要がある場合もあります。オープン/リードするたびに、ランダムな32桁(16オクテット)の16進数にする必要があります。 – NOYB

答えて

0

/var/command_result.txt名前付きパイプを作成し、開き、繰り返し、それに書き込みプロセスがありますか?これは、ファイルを読み込んでいる並行プロセスが必要な場合にはうまくいきませんが、それが逐次テストなどであれば問題ありません。

$ mknod /tmp/command_result.txt p 
$ perl -we '$a=0; 
    while(1){ 
    open(STDOUT,">","/tmp/command_result.txt"); 
    print "$a\n"; 
    $a++; 
    }' & 
[1] 31811 
$ head -1 /tmp/command_result.txt 
0 
$ head -1 /tmp/command_result.txt 
810 
$ head -1 /tmp/command_result.txt 
2431 
$ cat /tmp/command_result.txt | head -1 
3397 

あなたが見ることができるように、headは、結果を出力する前に複数の行を読み取ります。私が頭のコマンドを非常に急速に走らせた後、私はペール側で破損したパイプのエラーで巻き上げました。トラップでその問題を解決できます。

関連する問題