如果BASH中只有三个变量为True,如何返回True?

kar*_*max 0 bash scripting if-statement

如果BASH中只有三个变量为True,如何返回True?

我有三个布尔变量:

a|b|c|
1 1 1 False
1 1 0 False
1 0 1 False
1 0 0 True
0 1 1 False
0 1 0 True
0 0 1 True
0 0 0 False
Run Code Online (Sandbox Code Playgroud)

我需要仅在一个变量为true时才为true的逻辑表达式。我尝试

if  [[ ( $a == 1 || $b == 1 || $c == 1 ) && ( $a == 1  &&  $b == 1  &&  $c == 1 ) ]];  then
  return True
fi
Run Code Online (Sandbox Code Playgroud)

谢谢

cho*_*oba 7

您可以对这些值求和,然后检查结果是否等于1。

在这里,我使用算术表达式对数字求和并检查是否相等。

#! /bin/bash
for a in 0 1 ; do
    for b in 0 1 ; do
        for c in 0 1 ; do
            printf '%s ' $a $b $c
            (( 1 == a + b + c )) && echo True || echo False
        done
    done
done
Run Code Online (Sandbox Code Playgroud)