bash IF不匹配包含正则表达式数字的变量



DPHPV =/usr/local/nginx/conf/php81-remi.conf;

我无法找出如何匹配包含任何2位数字的字符串:

if [[ "$DPHPV" =~ *"php[:digit:][:digit:]-remi.conf"* ]]

您没有在这里使用正确的正则表达式,因为*是正则表达式中的量词,而不是任何文本的占位符。

实际上,您不需要正则表达式,您可以使用像

这样的glob模式。
if [[ "$DPHPV" == *php[[:digit:]][[:digit:]]-remi.conf ]]

注意

  • ==-启用全局匹配
  • *php[[:digit:]][[:digit:]]-remi.conf-用*匹配任何文本,然后匹配php,然后匹配两位数字(注意POSIX字符类必须在括号表达式中使用),然后在字符串末尾匹配-rem.conf。查看在线演示:
#!/bin/bash
DPHPV='/usr/local/nginx/conf/php81-remi.conf'
if [[ "$DPHPV" == *php[[:digit:]][[:digit:]]-remi.conf ]]; then
echo yes;
else
echo no;
fi

输出:yes.

最新更新