【发布时间】:2014-11-25 19:24:41
【问题描述】:
我正在尝试生成一些准随机数以输入蒙特卡罗模拟。我正在使用 bash。我似乎遇到了一个语法错误,我已将其范围缩小到这段代码中。
randno4=($RANDOM % 100001)
upper_limit4=$(echo "scale=10; 1*75.3689"|bc)
lower_limit4=$(echo "scale=10; 1*75.1689"|bc)
range4=$(echo "scale=10; $upper_limit4-$lower_limit4"|bc)
t_twall=`echo "scale=10; ${lower_limit4}+${range4}*${randno3}/100001" |bc`
echo "$t_twall"
有谁知道为什么我在下面的输出而不是 75.3689 和 75.1689 之间的值,因为这是我所期望的?
(standard_in) 1: syntax error
【问题讨论】:
-
randno4=($RANDOM % 100001)不是算术评估。这将创建一个randno4='([0]="25649" [1]="%" [2]="100001")'数组。也许你的意思是randno4='$(($RANDOM % 100001))'? -
第一行是好的。它只是没有做你认为它做的事情。运行该行,然后运行
declare -p randno4。然后尝试echo "$randno4"与echo "${randno4[1]}"。 -
我相信这里的实际错误来自
bc,因为randno3错字。 -
bash 手册页解释了
RANDOM的范围。它被记录为“0 到 32767 之间的随机整数”。 -
mancommand 应该是你学习的第一个 Linux 命令。这是bashman page
标签: bash syntax-error