2010-11-12 49 views
0
num=0.5 

avg=`seq 0.47 0.01 0.79` 

case $num in 
"$avg") 
echo "ok" 
;; 
1) 
echo "no" 
;; 
esac 

我试图做到这一点,如果你明白。 所以,即时通讯给它一个数字,并且如果数字匹配序列就没关系。 但这不起作用。有没有另一种方法来做到这一点?Bash案例序号

+0

请注意'0.5'永远不会匹配来自'seq 0.47 0.01 0.79'的输出,但'0.50'将会。 – 2010-11-13 00:18:26

回答

1
 
num=0.5 
result="not ok" 
for vers in $(seq 0.47 0.01 0.79) 
do 
    if [ "$vers" = "$num" ] ; then 
     result=ok 
     break  # thanks @GreenMatt 
    fi 
done 
echo $result 
+0

使用break命令退出循环。 – GreenMatt 2010-11-12 22:20:38

+0

规则:你测试了吗?我只是剪下并粘贴了代码,然后“不好”。 – camh 2010-11-13 00:26:02

+0

是的。输入'0.5'应该会给你“不好”。输入“0.50”将是“OK”。 – mob 2010-11-13 21:47:25