How do I check whether a variable has an even (not odd) numeric value in bash?
我应该如何更改这个值来检查val是否有偶数或奇数数值?
1 2
| val=2
if $((RANDOM % $val)); ... |
- 你想检查什么?
- 我需要这是一个正确的条件语句来检查随机变量是否是偶数。现在它只是说:"0:找不到命令"
- 这样地?stackoverflow.com/questions/360155/…
- 我只是不太明白我做错了什么,正确的语法是什么。方括号也没用。
- if [ $(( $RANDOM % 2)) -eq 0 ]; then echo"even" ; fi可以工作
- 哦,我明白了,应该在方括号周围留有空格。
- 我相信这里的问题是:"这个数字是偶数而不是奇数吗?"这里的答案反映了这一点。可能还有其他问题可以回答这个问题。但用于标记问题副本的链接不正确。如果设置了变量,这个问题就会回答。
- @重复链接的anthon不相关
- 这不是标记为副本的问题的副本!这个问题涉及到一个变量是否分配了一个值(或者如果它存在的话),这个问题涉及到一个变量的数值是偶数还是奇数。我没有检查编辑,但可能提问者在第一次发布后澄清了问题?如何标记错误标记的内容?
1 2 3 4 5 6 7 8
| $ a=4
$ [ $((a%2)) -eq 0 ] && echo"even"
even
$ a=3
$ [ $((a%2)) -eq 0 ] && echo"even" |
1 2 3 4 5 6 7 8
| foo=6
if [ $((foo%2)) -eq 0 ];
then
echo"even";
else
echo"odd";
fi |
$(( ... ))只是一个表达式。它的结果出现在bash期望命令的地方。
与POSIX兼容的解决方案是:
1
| if ["$(( RANDOM % 2))" -ne 0 ]; |
但由于posix中也没有定义RANDOM命令,因此您也可以使用正确的bash命令来执行作业:算术计算复合命令:
1
| if (( RANDOM % 2 )); then |
- 当随机数不是2的倍数时,if (( RANDOM % 2 )); then是真的,这很奇怪(很难理解)。
- 这是其他语言中常用的相同成语。C应该有if ( random/2 ) { ... }。python应该有if random/2: ...。