Как я могу получить 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
задан 6 January 2014 в 13:00

1 ответ

Причина, по которой ваша первая строка работает на OSX, а не на Ubuntu, скорее всего, потому что sh - это bash на OSX. $RANDOM уже расширен к тому времени, когда bash -c приступает к его выполнению, поскольку вы использовали кавычки "". Так что вы, вероятно, хотите это:

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

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

awk 'BEGIN{srand();printf("%d", 65536*rand())}'
0
ответ дан 6 January 2014 в 13:00

Другие вопросы по тегам:

Похожие вопросы: