关于如何在条件下执行布尔运算有 20 个问题/答案:
if [ 4 -gt 3 ] && [ 3 -gt 2 ]; then echo "True"; else echo "False"; fi
但是如何独立执行布尔运算呢?
我正在寻找相当于以下代码的东西:
bool a=true, b=false, c=true;
bool r1 = a && b;
bool r2 = a && (b || c);
在 bash 中,它应该是这样的:
a=1;b=0;c=1
r1=`expr a && b`
r2=`expr a && ( b || c )`
答案1
使用$(( ))
构造
请man bash
参阅“算术评估”
shell 允许在某些情况下对算术表达式进行求值(请参阅let 和declare 内置命令、(( 复合命令和算术扩展)。
r1=$((a && b))
r2=$((a && ( b || c )))
echo $1
0
echo $2
1
笔记
that
&
是按位,而 while&&
是逻辑0
并≠0
恢复到传统/数学0/假和≠0/真值(与 unix 返回码不同)b=$(( 7 & 5 )) echo $b 5 l=$(( 7 && 5 )) echo $l 1