因此,我尝试创建一个随机数,将范围限制在1到10之间。两者之间的语法略有不同,我不知道它们之间是否有任何区别。
$(($RANDOM % 10 +1))
我试过了,它工作正常。
$(( ( RANDOM % 10 ) + 1 ))
。在RANDOM % 10
和+1
之间包含一个额外的()似乎与上面的代码相同。但是它只有一个$而不是2。
答案 0 :(得分:6)
什么都没有。 %
的优先级(与*
相同)比+
高,因此未加括号的版本等同于带有明显括号的版本。
我最初是想第二个也使用RANDOM
而不是$RANDOM
。在算术上下文中,字符串被视为标识符,并(递归)扩展,直到获得整数为止。如果在任何时候该字符串都不是已定义的参数,则使用值0
代替。例如:
$ foo=bar
$ bar=6
$ echo $((bar))
6
$ echo $((foo))
6
在最后一种情况下,$foo
扩展为bar
,后者扩展为6。
IMO,最好使用显式扩展。如果由于输入错误而未设置该参数,则会收到一个明确的错误
$ foo=6
$ echo $((10 + $fo))
bash: 10 + : syntax error: operand expected (error token is "+ ")
而不是无意的“成功”
$ echo $((10 + fo))
10 # ?? Why not 16?