我有 3 个布尔变量 a、b 和 c。在 bash 中编写 if else 条件(或更好的方法)以覆盖所有组合的最佳方法是什么(参见图片)。
例如: a=y,b=y 和 c=y 然后 echofoo
我可以编写多个 elseif 条件,但是有其他方法吗?
不太确定您到底期望什么,但如果您需要检查每种可能的组合,并且您的变量只能有两个值: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)
我会用关联数组来做到这一点:
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)