小编典典

Bash 中的简单逻辑运算符

all

我有几个变量,我想检查以下条件(用文字写出来,然后我尝试 bash 脚本失败):

if varA EQUALS 1 AND ( varB EQUALS "t1" OR varB EQUALS "t2" ) then

do something

done.

在我失败的尝试中,我想出了:

if (($varA == 1)) && ( (($varB == "t1")) || (($varC == "t2")) ); 
  then
    scale=0.05
  fi

阅读 77

收藏
2022-04-19

共1个答案

小编典典

这是在 bash 中编写测试的惯用方式:

if [[ $varA == 1 && ($varB == "t1" || $varC == "t2") ]]; then

如果您需要移植到其他 shell,这将是一种方式(注意每个单独的测试周围的附加引号和单独的括号集,以及使用传统=运算符而不是
ksh/bash/zsh==变体):

if [ "$varA" = 1 ] && { [ "$varB" = "t1" ] || [ "$varC" = "t2" ]; }; then
2022-04-19