$ RANDOM в сценарии и в командной строке

0

Я думаю, что нашел действительно странную ошибку в генераторе случайных чисел Баша ( $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)
stephenwade
источник
Хорошо здесь .... Вы запускали это много раз?
MiJyn
Да, и каждый раз это дает один и тот же странный пропуск вниз.
Стивенвейд
@MiJyn отредактировал, чтобы добавить системную информацию. Я на Mac OS X, но использую GNU Bash через Homebrew.
Стивенвейд

Ответы:

0

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

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

stephenwade
источник