如何简化bash中的比较?

时间:2018-02-17 16:32:15

标签: linux bash scripting comparison

如何通过将条件和比较点放在旁边而不是长队列中来进行bash中的多次比较?

这样的事情

之前:

if [[ $var == "aaa" || $var == "bbb" || $var == "ccc" || $var == "ddd" ]];
then
 echo "good";
fi

之后(我想要的):

if [[ $var==["aaa","bbb","ccc","ddd"] ]];
then
 echo "good";
fi

2 个答案:

答案 0 :(得分:2)

使用extended pattern matching

shopt -s extglob
[[ $var = @(aaa|bbb|ccc|ddd) ]] && echo "good"

答案 1 :(得分:1)

使用bash regex和关键作品=~

尝试此操作
if [[ $var =~ ^(aaa|bbb|ccc|ddd)$ ]];
then
 echo "good";
fi

编辑:

正如评论中所见,实际上您需要比较int,而不是strings,所以:

((var%3 == 0)) && echo "ok"

使用bash arithmetic