所以我试图创建一个随机数,限制范围从 1 到 10。两者之间的语法略有不同,我不知道它们之间是否有任何区别。
$(($RANDOM % 10 +1))
我试过了,效果很好。
$(( ( RANDOM % 10 ) + 1 ))
。在 RANDOM % 10
和 +1
之间包含一个额外的 () 似乎与上面的代码一样工作。但它只有一个 $ 而不是 2 个。
最佳答案
没有。 %
比 +
具有更高的优先级(与 *
相同),因此未加括号的版本等同于已显式加括号的版本。
我最初错过了第二个也使用 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?
关于linux - $(($RANDOM % 10 +1)) 和 $(( ( RANDOM % 10 ) + 1 )) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54676347/