Como posso obter o bash $ RANDOM em um makefile?

1

Isso funciona no OSX:

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

test:
    echo $(RANDOM)

Para números aleatórios entre plataformas, recorri a isso:

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

Como posso fazer o primeiro exemplo funcionar?

    
por Kit Sunde 06.01.2014 / 10:00

1 resposta

4

A razão pela qual sua primeira linha funciona no OSX e não no Ubuntu, é provável porque sh é bash no OSX. $$RANDOM já está expandido no momento em que o bash -c começa a executá-lo, já que você usou "" quotes. Então você provavelmente quer isso:

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

Pessoalmente, eu provavelmente iria com o awk. Algo como

awk 'BEGIN{srand();printf("%d", 65536*rand())}'
    
por geirha 06.01.2014 / 10:29