在&&和和if语句中的bash运算符

时间:2017-05-23 14:12:39

标签: bash

我尝试根据编解码器和比特率过滤视频。

如果编解码器是xvid或x264或x265且比特率大于500,则键入= 42 否则对于xvid和比特率低于500然后类型为2和x264 / x265并且比特率低于500然后类型为54

以下方式是否正确?

if [ "$PROFILE" == "TV" ]; then
    LEETCAT=TV
    bitrate=$(cat $UP_INFO_FILE | grep "Height"  |  awk -F ':' '{print $2}' | grep -o "[0-9]*" | head -n 1)
    echo "Height: $bitrate"
    if [ "$bitrate" == "" ]; then
        echo Bad bitrate
        continue
    fi
    if [ "$bitrate" -ge "500" ]; then
        LEETTYPE=41
    else
        LEETTYPE=6
    fi

else
    if [ "$PROFILE" == "MOVIE" ]; then
        LEETCAT=Movies
        XviD=$(cat $UP_INFO_FILE | grep "Simple@"  |  awk -F ':' '{print $2}' | grep -o "[0-9]*" | head -n 1)
        X264=$(cat $UP_INFO_FILE | grep "Advanced Video Codec"  |  awk -F ':' '{print $2}' | grep -o "[0-9]*" | head -n 1)
        X264=$(cat $UP_INFO_FILE | grep "High Efficiency Video Codec"  |  awk -F ':' '{print $2}' | grep -o "[0-9]*" | head -n 1)
        bitrate=$(cat $UP_INFO_FILE | grep "Height"  |  awk -F ':' '{print $2}' | grep -o "[0-9]*" | head -n 1)

        echo "Codec: $bitrate"

        if [ "$bitrate" == "" ]; then
            echo Bad bitrate
            continue
        fi

        if [ "$XviD" == "Simple@" ] || [ "$X264" == "Advanced Video Codec" ] || [ "$X265" == "High Efficiency Video Codec" ] && [ "$bitrate" -ge "500" ];
            LEETTYPE=42
        elif [ "$XviD" == "Simple@" ] && [ "$bitrate" -le "499" ]; then
            LEETTYPE=2
        elif [ "$X264" == "Advanced Video Codec" ] || [ "$X265" == "Advanced Video Codec" ] && [ "$bitrate" -le "499" ]; then
            LEETTYPE=54
        fi
        echo $LEETTYPE
    else
        echo Bad profile:$PROFILE
        continue
    fi
fi

1 个答案:

答案 0 :(得分:0)

使用if(否则...... if ...)来测试您的其他方案,而不是嵌套elif语句:

if [ "$XviD" = "Simple@" ] || [ "$X264" = "Advanced Video Codec" ] || [ "$X265" = "High Efficiency Video Codec" ] && [ "$bitrate" -ge "500" ];
    LEETTYPE=42
elif [ "$XviD" = "Simple@" ] && [ "$bitrate" -le "499" ]; then
    LEETTYPE=2
elif [ "$X264" = "Advanced Video Codec" ] || [ "$X265" = "Advanced Video Codec" ] && [ "$bitrate" -le "499" ]; then
    LEETTYPE=54
fi
相关问题