Я думаю, что нашел действительно странную ошибку в генераторе случайных чисел Баша ( $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)
bash
bash-scripting
stephenwade
источник
источник
Ответы:
Ну, я чувствую себя глупо.
Проблема была в том, что
/bin/bash
по умолчанию OS X Bash 3.2. Homebrew устанавливает Bash to/usr/local/bin/bash
, который я использую в своем терминале. Если я изменю шебанг на это, он будет работать как положено.источник