为 3 个布尔变量编写 if else 条件的最佳方法是什么

gam*_*r17 3 bash

我有 3 个布尔变量 a、b 和 c。在 bash 中编写 if else 条件(或更好的方法)以覆盖所有组合的最佳方法是什么(参见图片)。

例如: a=y,b=y 和 c=y 然后 echofoo

在此输入图像描述

我可以编写多个 elseif 条件,但是有其他方法吗?

yol*_*yer 7

不太确定您到底期望什么,但如果您需要检查每种可能的组合,并且您的变量只能有两个值:yor n,那么您可以使用case语句:

case "$a$b$c" in
    yyy) echo bar ;;
    yyn) echo foo ;;
    yny) echo foo ;;
    ynn) echo foo ;;
    nyy) echo bar ;;
    nyn) echo foo ;;
    nny) echo foo ;;
    nnn) echo foo ;;
    *) echo error; exit 1 ;;
esac
Run Code Online (Sandbox Code Playgroud)


Ted*_*gmo 5

我会用关联数组来做到这一点:

declare -A arr=(
   [yyy]=foo
   [ynn]=bar
   [yyn]=bar
   [nyn]=bar
   [nyy]=foo
   [nny]=bar
)

echo ${arr["$a$b$c"]}
Run Code Online (Sandbox Code Playgroud)