首页 > 解决方案 > Bash 多重与或逻辑运算

问题描述

试图基本上做一些相当于 (a && b) || (c && d)bash 的事情。

目前我有这个,但它不起作用,这只是我玩弄语法的结果..

if [[ -f $TRASH/.$arg && -f $arg ]  || [ -d $TRASH/.$arg && -d $arg ]]

最初我只是检查是否存在两个文件,但我需要展开以查看文件或目录是否存在。

标签: bashboolean-logic

解决方案


bc 是一个任意精度的数学和逻辑计算器。对于 cygwin bash,必须显式安装 bc。

#!/bin/bash

a=$1
b=$2
c=$3
d=$4
echo $a $b $c $d

res=$(bc <<< "($a && $b) || ($c && $d)")
echo $res

推荐阅读