我认为我在 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)-release(通过 Homebrew 安装)
答案1
嗯,我觉得自己很傻。
问题是这/bin/bash
是 OS X 的默认 Bash 3.2。Homebrew 将 Bash 安装到/usr/local/bin/bash
,这是我在终端中使用的。如果我将 shebang 更改为该版本,它会按预期运行。