2016-07-19 9 views
2

私はGNU Makefileのいくつかのランダムなデータを生成するためにOpenSSLを使用します。なぜGNU Makeはこの変数を展開するたびにシェルコマンドを再実行しますか?

RANDOM_DATA=$(shell /usr/bin/openssl rand -hex 32) 

私は、スクリプト内の他の場所でこのRANDOM_DATAを複数回使用することができるようにしたいです。しかし、参照されるたびに、コマンドを再実行して新しいデータを返します。たとえば、レシピ内の次の行は、異なる値を出力します。

echo ${RANDOM_DATA} 
echo ${RANDOM_DATA} 
echo ${RANDOM_DATA} 

なぜこれを防止できますか?

答えて

2

尋ねられた後、数分で答えが見つかりました。

this pageによると、=の代わりに:=を使用して、変数が再帰的にではなく定義された時点で強制的に展開されるようにする必要があります。

関連する問題