2016-09-01 1 views
0

Я хочу создать тематическое заявление, включая два выражения, мое воображение, чтобы выглядеть следующим образом:Баша для двух переменных

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 word in ...», что означает, что вы можете написать «case» foo «in» foo ») echo« foo found »;; esac'. –

+0

ok, я имею в виду выражения - синтаксис - это case case in, есть ли способ использовать два выражения в одном случае? Пример: «case expression1 & expression2 in» или «case expression1 или 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 не имеют булевы константы; true и false - это просто строки, без прямого способа обработки их как булевых значений. Если вы используете стандартную кодировку 0 и 1 в качестве логических значений, вы можете использовать $((...)):

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