如何在 makefile 中获取 bash $RANDOM?

如何在 makefile 中获取 bash $RANDOM?

这在 OSX 上有效:

RANDOM := $(shell /bin/bash -c "echo $$RANDOM")

test:
    echo $(RANDOM)

对于跨平台随机数,我采用了以下方法:

RANDOM := $(shell od -An -N2 -i /dev/random | tr -d ' ')

我怎样才能使第一个例子发挥作用?

答案1

您的第一行在 OSX 上有效而在 Ubuntu 上无效的原因可能是因为 sh 在 OSX 上是 bash。$$RANDOM由于您使用了引号,因此在 bash -c 开始执行它时已经扩展""。因此您可能需要这个:

RANDOM := $(shell bash -c 'echo $$RANDOM')

我个人可能会选择 awk。比如

awk 'BEGIN{srand();printf("%d", 65536*rand())}'

相关内容