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

Rel*_*ser 2 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"
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么我在下面的输出而不是 75.3689 和 75.1689 之间的值,因为这是我所期望的?

(standard_in) 1: syntax error
Run Code Online (Sandbox Code Playgroud)

Gil*_*not 5

第一行应如下所示:

randno4=$((RANDOM % 100001))
Run Code Online (Sandbox Code Playgroud)

(( ))是 bash 算术,以 开头$,值被替换:$(( ))

当你写

randno4=( )
Run Code Online (Sandbox Code Playgroud)

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

http://wiki.bash-hackers.org/syntax/arith_expr

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

  • 虽然此代码片段可能会解决问题,但 [包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而那些人可能不知道您提出代码建议的原因。 (2认同)