我想测试$ ip是否等于两个值中的一个:" a"或" b"。当我只测试" a"有用。我不想做||并执行另一个grep + cut,因为我已经完成了一次,我想取结果并根据这两个值进行测试。
if [[ $(grep -e "$ip" FILE |cut -d' ' -f5) =~ 'a\|b'; then
echo "OK"
fi
答案 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