2016-09-01 79 views
0

我想創建一個case語句,包括兩個表達式,我的想象力是這個樣子:的bash shell腳本case語句兩個變量

a=true 
b=false 

case [ "$a" || "$b"] in #<-- how can I do this with a case statement ? 

true)echo "a & b are true" ;; 
false)echo "a or b are not true" ;; 

esac 

是否有可能與案件,而不是如果做到這一點?

感謝

+0

case語句不「包括」變量,看'幫助case'。這是......中的單詞......這意味着你可以在「foo」中寫入case「foo」)echo「foo found」;; esac'。 –

+0

好的,我的意思是表達式 - syntaxis是case語句,有沒有在一個case語句中使用兩個表達式的方法?示例:'case'expression1和expression2 in'or'case expression1 or expression2 in'? –

+0

這可能有助於http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html – Inian

回答

3

這是一個例子,但它是關於字符串,而不是真正的邏輯表達式:

$ cat > foo.sh 
a=true 
b=false 
case $a$b in  # "catenate" a and b, two strings 
    *false*)  # if there is substring false (ie. truefalse, falsetrue or falsefalse) in there 
     echo false # it's false 
     ;; 
    *) 
     echo true # otherwise it must be true 
     ;; 
esac 

$ bash foo.sh 
false 
2

bash沒有布爾常量; truefalse只是字符串,沒有直接的方式將它們視爲布爾值。如果您使用的0和1爲布爾值的標準編碼,也可以使用$((...))

a=1 # true 
b=0 # false 
case $((a && b)) in 
    1) echo 'a && b == true' ;; 
    0) echo 'a && b == false' ;; 
esac