在if / then语句中放置什么以测试字符串是否包含模式

时间:2019-07-03 15:02:07

标签: regex bash

我正在尝试找出如何测试字符串是否包含模式的方法。我还没有成功。

我尝试使用=〜,但似乎不起作用。

IFS=;
count=0;
lspciarray=();
mylspciarrays=($(lspci -v));
for lspciarrays in "${mylspciarrays[@]}";
    do lspciarray[$count]=$lspciarrays;
    if [[ lspciarray[$count]=~^[0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][.][0-9a-f]* ]];
        then echo ${lspciarray[$count]};
    fi;
    ((count++));
done;
unset IFS;

我期望仅获得包含模式^ [0-9a-f] [0-9a-f] [:] [0-9a-f] [0-9a-f] [。]的行。 [0-9a-f] *,但我仍然从lspci -v

获得了完整的输出

1 个答案:

答案 0 :(得分:0)

[[ $anything=~$anything ]]]

始终为真,因为=~不会被视为没有空格的运算符;相反,您正在检查扩展结果是否为空字符串。因为它具有恒定的成分(=~),所以它始终是非空的,因此操作的结果始终为true。