2013-03-27 42 views
22

我该如何改变它以检查val是否有偶数或奇数值?如何检查一个变量是否在bash中有一个偶数(而不是奇数)值?

val=2 
if $((RANDOM % $val)); ... 
+0

你想检查什么? – fedorqui 2013-03-27 13:20:56

+0

我需要这是一个正确的条件语句来检查随机变量是否是偶数。现在它只是说:“0:command not found” – lizarisk 2013-03-27 13:22:26

+0

喜欢这个? http://stackoverflow.com/questions/3601515/how-to-check-if-a-variable-is-set-in-bash – 2013-03-27 13:22:50

回答

40
$ a=4 

$ [ $((a%2)) -eq 0 ] && echo "even" 
even 

$ a=3 

$ [ $((a%2)) -eq 0 ] && echo "even" 
+1

用逻辑AND和echo命令学习了一些新东西。谢谢。 – shparekh 2014-09-16 18:12:10

9

$((...))只是一个表达式。其结果显示bash需要命令。

一个POSIX兼容的解决方案是:

if [ "$((RANDOM % 2))" -ne 0 ]; 

但由于RANDOM没有在POSIX定义要么,你不妨使用权bash命令作业:算术评估复合命令:

if ((RANDOM % 2)); then 
+0

这是奇怪的(即,很难读),如果((RANDOM%2));那么当RANDOM不是2的倍数时,将是真的...... – 2013-03-27 13:37:04

+0

这是其他语言中常用的相同习语。 C会有'if(random/2){...}'。 Python会有'if random/2:...'。 – chepner 2013-03-27 13:40:18

24
foo=6 

if [ $((foo%2)) -eq 0 ]; 
then 
    echo "even"; 
else 
    echo "odd"; 
fi 
+0

这解决了我的问题。 – shparekh 2014-09-16 18:13:02

相关问题