Я думаю, что нашел действительно странную ошибку в генераторе случайных чисел Bash ($RANDOM).

Показывать проще, чем рассказывать, вот что происходит:

Цель состоит в том, чтобы получить случайные цифры. Если я выполню это, я получу 20 случайных цифр, как и ожидалось.

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

Но если оператор echo содержится в скрипте, я получаю действительно странную комбинацию цифр.

$ 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

Что происходит в мире?

Системная информация:

  • Mac OS X 10.10.2
  • GNU Bash, версия 4.3.30(1)-релиз (устанавливается через Homebrew)

1 ответ1

0

Ну, я чувствую себя глупо.

Проблема заключалась в том, что /bin/bash является Bash 3.2 по умолчанию в OS X. Homebrew устанавливает Bash в /usr/local/bin/bash , что я и использую в своем терминале. Если я изменю шебанг на это, он будет работать как положено.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .