(standard_in)1:bash脚本中的语法错误

时间:2014-11-25 19:24:42

标签: bash syntax-error

我试图生成一些准随机数以进入蒙特卡罗模拟。我正在使用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

1 个答案:

答案 0 :(得分:3)

第一行应如下:

randno4=$((RANDOM % 100001))

(( ))是bash算术,前导$,代替值:$(( ))

当你写

randno4=( )

您尝试使用错误的语法为算法表达式提供ARRAY。

请参阅http://wiki.bash-hackers.org/syntax/arith_expr

最后,就像Etan Reisner所说的那样,你还在未定义的t_twall分配行中使用$ randno3