首页 > 解决方案 > 如果 BASH 中只有三个变量中的一个为 True,如何返回 True?

问题描述

如果 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

我需要一个逻辑表达式,仅当一个变量为真时才返回真。我尝试

if  [[ ( $a == 1 || $b == 1 || $c == 1 ) && ( $a == 1  &&  $b == 1  &&  $c == 1 ) ]];  then
  return True
fi

谢谢

标签: bashif-statementscripting

解决方案


您可以对这些值求和并检查结果是否等于 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

推荐阅读