2013-04-29 72 views
2

我想将特定范围内获得随机数:解释这一BASH表达

random_number=$((RANDOM % $RANGE)) 

这给了我一个错误

")syntax error: invalid arithmetic operator (error token is " 

我想我不能在这个表达式中使用$范围内,但为什么? 我该如何重写?

+0

你或许应该看到:http://stackoverflow.com/questions/ 673016/bash - 如何在算术表达式中进行可变扩展 – zakinster 2013-04-29 12:00:10

+0

试试这个: http://stackoverflow.com/questions/2556190/random-number-from-a-range -in-bash-script – girardengo 2013-04-29 12:20:39

+0

'='是否真的被空白包围? – Jens 2013-04-29 12:27:35

回答

3

是不是这样的:

random_number = $(($RANDOM % $RANGE)) 

$RANDOM

如果不起作用此post

:建议:

shuf -i 2000-65000 -n 1 

UPDATE
改写这种情况的方法如下:

random_number = $(($RANDOM % some_numeric_value)) 
+0

不,我试过了,同样的错误:( – minerals 2013-04-29 12:01:59

+1

其实你可以在算术表达式中省略'$' – zakinster 2013-04-29 12:02:35

+0

@zakinster啊很高兴知道。 – Woot4Moo 2013-04-29 12:03:18

2

它看起来像你的变量RANGE可以用回车或别的东西所污染。

如果您使用的是Windows,可能会有一个\r从EOL的错误配置,你可以试试这个:

random_number = $((RANDOM % $(tr -d '\r' <<< "$RANGE"))) 
+0

有趣的是,我从'cat list.txt | wc -l'得到了RANGE,不认为wc -l加回车 – minerals 2013-04-29 12:04:19

+0

@minerals什么是你的操作系统? – zakinster 2013-04-29 12:06:05

+0

它是cygwin :) – minerals 2013-04-29 12:06:54