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