Bash 使用带“的命令实现布尔表达式”;如果是,则为“否则”;
我们知道可以执行Bash 使用带“的命令实现布尔表达式”;如果是,则为“否则”;,bash,Bash,我们知道可以执行if命令;然后呢,;fi,其中从命令返回的状态被解释为布尔值(0==true)。我们还知道,如果[[$a>$b | |$c==yes]],那么做是可以的;然后呢,;fi 但我很好奇,因为我们不允许使用“if”组合像布尔表达式这样的命令,如if-cmd1 | | cmd2;然后,;某物fi。或者我们可以吗 没有“if”或甚至使用嵌套if,还有其他方法可以做到这一点。但是,我对使用if:-)感兴趣 谢谢你的评论。我把这个留在这里 check_and() { if grep -
if命令;然后呢,;fi
,其中从命令
返回的状态被解释为布尔值(0==true)。我们还知道,如果[[$a>$b | |$c==yes]],那么做是可以的;然后呢,;fi
但我很好奇,因为我们不允许使用“if”组合像布尔表达式这样的命令,如if-cmd1 | | cmd2;然后,;某物fi
。或者我们可以吗
没有“if”或甚至使用嵌套if,还有其他方法可以做到这一点。但是,我对使用if
:-)感兴趣
谢谢你的评论。我把这个留在这里
check_and() {
if grep -q A <<<"$1" && grep -q C <<<"$1"; then
echo YES
else
echo NO
fi
}
check_or() {
if grep -q A <<<"$1" || grep -q C <<<"$1"; then
echo YES
else
echo NO
fi
}
check_and ABC # YES
check_and ABD # NO
check_and ZBC # NO
check_and ZBD # NO
check_or ABC # YES
check_or ABD # YES
check_or ZBC # YES
check_or ZBD # NO
检查_和(){
if grep-q A这是正确的。if
语句的条件被定义为一个列表,非常粗略地说,它要么是一个管道,要么是由&
或|
连接的两个列表。这些不是布尔运算符,尽管有相似之处。A&&b
运行A
,然后运行bde>如果a
成功。a | | b
运行a
,如果a
失败,则运行b
比较
if [[ $a > $b || $c == yes ]]; then # conditional operators
if [[ $a > $b ]] || [[ $c == yes ]]; then # shell operators
鉴于[[…]]
是一个内置命令,两者之间的差别很小。但是,shell运算符具有相同的优先级,而条件运算符&&
的优先级高于条件运算符|
。也就是说
if a || b && c; then # same as (a || b) && c
if [[ a || b && c ]]; then # same as a || (b && c)