2015-08-27 78 views
1

爲什麼OR條件在下面的bash腳本中不起作用?Bash or condition in IF

read number 
if [ "$number" != 1 -o "$number" != 2 ] ; then echo not 1 or 2 fi 
if [ "$number" == 1 -o "$number" == 2] ; then echo 1 or 2 fi 
exit 
+4

應該不是第一個是'[ 「$號」!= 1 -a 「$號」!= 2]'? – user000001

+3

你應該總是以什麼方式指定*它不起作用。你期待什麼結果,你實際得到了什麼結果,以及這種情況發生在哪些輸入上? –

+0

謝謝,抱歉浪費你的時間,我應該用-a代替-o。不管價值是多少,我都會得到「不是1或2」的結果。 – Darknifem

回答

1

我想這和它的作品:

#!/bin/bash 
read number 
if [ "$number" != 1 -o "$number" != 2 ];then 
    echo not 1 or 2 
fi 
if [ "$number" == 1 -o "$number" == 2 ];then 
    echo 1 or 2 
fi 
exit 

輸出:

[~]$./test1.sh 
2 
not 1 or 2 
1 or 2 

反正按照正確的語法和你的第一個輸出消息,你應該這樣做:

#!/bin/bash 
read number 
if [ "$number" -ne 1 ] && [ "$number" -ne 2 ];then 
    echo not 1 or 2 
fi 
if [ "$number" -eq 1 ] || [ "$number" -eq 2 ];then 
    echo 1 or 2 
fi 
exit 

輸出:

[~]$./test1.sh 
1 
1 or 2 
[~]$./test1.sh 
2 
1 or 2 
[~]$./test1.sh 
3 
not 1 or 2 
[~]$./test1.sh 
4 
not 1 or 2 

問候 克勞迪奧