$ RANDOM no script vs. na linha de comando

0

Acho que encontrei um bug muito estranho no gerador de números aleatórios do Bash ( $RANDOM ).

Mostrar é mais fácil do que contar, então, eis o que acontece:

O objetivo é obter dígitos aleatórios. Se eu executar isso, recebo 20 dígitos aleatórios conforme o esperado.

for i in {1..20}; do echo $((RANDOM % 10)); done

Mas se a declaração echo estiver em um script, obtenho um padrão muito estranho de dígitos.

$ cat randomtest
#!/bin/bash
echo $((RANDOM % 10))

$ for i in {1..20}; do ./randomtest; done
9
8
8
6
7
5
5
4
4
2
3
1
1
1
0
0
8
9
7
7

O que está acontecendo no mundo?

Informação do sistema:

  • Mac OS X 10.10.2
  • GNU Bash, versão 4.3.30 (1) -release (instalado via Homebrew)
por stephenwade 09.03.2015 / 03:30

1 resposta

0

Bem, eu me sinto bobo.

O problema é que /bin/bash é o Bash 3.2 do OS X. O Homebrew instala o Bash em /usr/local/bin/bash , que é o que estou usando no meu terminal. Se eu mudar o shebang para isso, funciona como esperado.

    
por 09.03.2015 / 04:41