Как вернуть True, если в BASH верна только одна переменная из трех? - PullRequest
0 голосов
/ 19 сентября 2019

Как вернуть True, если только одна переменная из трех имеет значение True в BASH?

У меня есть три логические переменные:

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

Мне нужно логическое выражение, которое возвращает true только если одинпеременная верна.Я пытаюсь с

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

Спасибо

1 Ответ

7 голосов
/ 19 сентября 2019

Вы можете просто сложить значения и проверить, равен ли результат 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...