bash - 如果 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
谢谢
解决方案
您可以对这些值求和并检查结果是否等于 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
推荐阅读
- reactjs - 在 React 中,当我进行 get 调用时,为什么数据不会自动到来,如果我刷新页面,那么只有数据会到来?
- node.js - 使用生成的 *_pb.js 文件时,如何从 NodeJS 客户端调用 gRPC 服务器?
- node.js - 如何在mongodb聚合中舍入一个值
- spring - 在 Dialogflow 中管理上下文
- java - 如何在Java中制作(有效的)指针
- javascript - 如何在带有状态的新窗口中打开 props.history.push()
- c++ - 使用归纳法查找递归函数的时间复杂度
- c++ - C ++合并排序的链表未对前两个索引进行排序
- ios - Vapor:对查询结果进行后处理?
- visual-studio - .NET Core 的基本设计规则集已失效?