Как я могу получить bash $RANDOM в make-файле?

Это работает на 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 - это bash на OSX. $$RANDOM уже развернут к тому времени, когда bash -c доходит до его выполнения, так как вы использовали "" цитаты. Так что вы, вероятно, хотите это:

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

Лично я бы, наверное, пошел с awk. Что-то вроде

awk 'BEGIN{srand();printf("%d", 65536*rand())}'
Другие вопросы по тегам