当前位置: 首页 > 知识库问答 >
问题:

bash test中的OR逻辑运算符[重复]

萧嘉禧
2023-03-14

这项测试似乎不能正常进行。为什么?我需要一个脚本,它接受第一个参数,检查它是哪个字母,并完成这项工作。如果字母是a、b、c或d,则退出,否则为右。

letter=$1                                                                                                                                             


[[ $letter != a || $letter != b || $letter != c || $letter != d ]] && echo exiting && exit 1                                                          


if [[ $letter == a ]]                                                                                                                                 
then                                                                                                                                                  
echo correct                                                                                                                                      
fi

共有1个答案

张玺
2023-03-14

让我们举一个更简单的例子:<代码> [ [ $No.1a,$$No.= B] ] />代码>无论<代码>字母< /代码>是,这两个测试中的一个是真的。如果选择a,则$letter!=b。如果选择b,则$letter!=a。如果选择任何其他角色,则这两个都是真的。

你想要

[[ $letter != a && $letter != b && $letter != c && $letter !=d ]] && { echo exiting; exit 1; }.

或者使用=/=并在测试后使用|

[[ $letter = a || $letter = b || $letter = c || $letter = d ]] || { echo exiting; exit 1; }

(在这两种情况下,更喜欢显式的if语句,而不是使用

if [[ $letter != a && $letter != b ... ]]; then
    echo exiting >&2  # use standard error, not standard output
    exit 1
fi

if ! [[ $letter = a || $letter = b ... ]]; then
     echo exiting >&2  # use standard error, not standard output
     exit 1
fi

)

不过,更简单的方法是使用case语句:

case $letter in
    a|b|c|d) : ;;  # do nothing
    *) echo exiting
       exit 1
       ;;
esac

 类似资料:
  • JavaScript 中有三个逻辑运算符:||(或),&&(与),!(非)。 虽然它们被称为“逻辑”运算符,但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。 让我们来详细看一下。 ||(或) 两个竖线符号表示“或”运算符: result = a || b; 在传统的编程中,逻辑或仅能够操作布尔值。如果参与运算的任意一个参数为 true,返回的结果就为 tr

  • 问题内容: 下面的两个语句是否等效? 和 我可以使用某种真值表来验证这一点吗? 问题答案: 优先于,因此,即使 与…不同 因为那将被执行为 并且想要使它们相同,是以下内容(使用括号覆盖优先级规则): 这是一个示例说明:

  • 问题内容: 在阅读python中的逻辑运算符时,我遇到了一些表达式: 输出1 输出:5 谁能解释这是如何工作的? 我知道, 操作数 的的 逻辑 运算符是 布尔 问题答案: 有据可查: 两者都短路(例如,如果为 真,则不会评估)。 __ 该文档还指出了被认为 falsy (,,,空序列/映射,…) -一切被认为是 truthy 。 一些例子: 请注意,最后两个如何显示短路行为:不执行第二个语句(将引

  • 问题内容: 运算符和有什么不一样?和运算符|| ?? 而且&和&& ??有什么区别? 谢谢… 问题答案: 主要区别在于,在表达式中,如果为false,则不会进行计算,而在两者中,无论如何都将进行计算。可以说是“ 短路 ”评估。 同样,对于:如果为true,则不会进行评估,而对于两者而言,则无论如何都将被评估。

  • 主要内容:逻辑非运算(NOT 或者 !),逻辑与运算符(AND 或者 &&),逻辑或运算符(OR 或者 ||),异或运算(XOR 运算符)逻辑运算符又称为布尔运算符,用来确定表达式的真和假。 MySQL中支持的逻辑运算符如下表所示。 MySQL 中的逻辑运算符 运算符 作用 NOT 或者 ! 逻辑非 AND 或者 && 逻辑与 OR 和 || 逻辑或 XOR 逻辑异或   下面分别讨论 MySQL 逻辑运算符的使用方法。 逻辑非运算(NOT 或者 !) 和 都是逻辑非运算符,返回和操作数相反的结

  • 主要内容:打脸某些 Python 教程,逻辑运算符的本质高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。 Python 也有类似的逻辑运算,请看下表: 表 1 Python 逻辑运算符及功能 逻辑运算符 含义 基本格式 说明 and 逻辑与运算,等价于数学中的“且” a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 or 逻辑或运算,等价于数学