将 if-else-if 条件组合为逻辑表达式

将 if-else-if 条件组合为逻辑表达式

下面的表达式是组合 if-else if 语句的正确方法吗?

 if [ $TO_MAJOR -eq 7 ] ; then
   if [ $TO_MINOR -eq 3 -a $TO_PATCH -lt 2 ]; then
    echo "AE port not supported"

    elif [ $TO_MINOR -lt 3 ] ; then
            echo "AE port not supported"
    fi
 fi

 if [ [ $TO_MAJOR -eq 7 ] -a [ [ $TO_MINOR -eq 3 -a $TO_PATCH -lt 2 ] -o [ $TO_MINOR -lt 3 ] ] ]; then
        echo "AE port not supported"
        fi

答案1

第二个代码中的括号太多。 [是 的同义词test。所以有两种方法可以做你想做的事。一种是在单个测试语句中完成所有操作,在这种情况下只有一组括号:

if [ \( $TO_MAJOR -eq 7 -a $TO_MINOR -eq 3 -a $TO_PATCH -lt 2 \) -o $TO_MINOR -lt 3 ]; then

另一种是使用shell的&&and||操作符连接多个测试命令

if [ $TO_MAJOR -eq 7 ] && ...

但是你所拥有的不起作用,因为 while[与 , 是同义词test,在声明[中没有意义test

相关内容