如何使用IF测试两个字符串对一个变量

时间:2016-03-14 15:12:17

标签: linux bash unix if-statement

我想测试$ ip是否等于两个值中的一个:" a"或" b"。当我只测试" a"有用。我不想做||并执行另一个grep + cut,因为我已经完成了一次,我想取结果并根据这两个值进行测试。

if [[ $(grep -e "$ip" FILE |cut -d' ' -f5) =~ 'a\|b'; then
 echo "OK"
fi

2 个答案:

答案 0 :(得分:3)

您不必另外执行grep + cut,您始终可以将结果分配给变量。正则表达式匹配不等同于等式检查。以下将更具可读性

var=...; if [[ "$var" = "a" || "$var" = "b" ]]; then echo OK; fi

答案 1 :(得分:0)

case语句是一个可读的替代

case "$(grep ...)" in
    a|b) 
        echo OK
        ;;
    *)
        echo not OK
        ;;
esac