Как я могу получить 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())}'