0
私のシェルスクリプトの一意のIDを生成するために、次のコマンドを使用しています。私はハードディスク上の中間ファイルを使用せずに、変数で出力をキャプチャしたい。bash:意味のある一意のIDの生成
echo `dmidecode –t 4 -s system-uuid`-$$-$BASH_SUBSHELL-$BASHPID-`date '+%Y%m%d_%H%M_%S_%N'` | tr '-' '_'
XXB3A1XX_81XX_4XX2_AXX4_XXXX62820BF_24115_0_8550_201709XX_1446_46_385924883
I)は、バッククォートまたは$を(使用構築そうすること$ BASH_SUBSHELLの値を変更し、一意のIDの値を希釈することができます。
ハードディスクを使用せず、変数に出力をキャプチャするときに$ BASH_SUBSHELLの値を変更しない任意のソリューションです。
注記:例の結果は、部分的にX
は、我々が見ることができる$$ - $ BASH_SUBSHELL- $ BASHPIDは、3つの一意の値を与え、$ BASH_SUBSHELL値は直接エコーの場合に0として保持されます。しかし、上記の方法では、私たちは2になります。エントロピーが減った!! –
@ thesudhakarまあ、それは直接エコーではありません。パイプを使用したときにフォークを作成しました。エントロピーについては、私はなぜあなたが['uuidgen'](http://man7.org/linux/man-pages/man1/uuidgen.1.html)のようなものを使うのではなく、これをやっているのか、真のUUIDを作成するためにPythonを使用しているので、私はコメントしません。 – muru
私には何があるのか、何の意味があるのかは分かりません。パイプについては、 'foo | bashは分岐し、 'foo'と' bar'を独立して実行します。 'printf'にパイプはなく、' printf'は組み込み関数なので、分岐はありません。 – muru