You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复BASH_REMATCH无法正确捕获带/字符的host/url问题

问题原因

你当前使用的捕获host/url的正则表达式字符集[a-zA-Z0-9.-]+仅包含字母、数字、英文句点、短横线三类字符,没有包含URL中常见的/字符,因此正则匹配到/时就会中断,导致仅能捕获到/之后的内容。

修复方案

调整host/url的捕获正则即可,推荐使用适配性更强的通用匹配写法:
由于你的文件格式固定为# [目标内容] (host/url ok),可以直接匹配#后到下一个空格之间的所有非空格字符,无需穷举合法字符,不管后续URL出现其他合法特殊字符也能正常捕获。

完整修改后代码

while read -r line
  do
    if [[ $line =~ ^#\ ([^ ]+)\ \((host|url)\ ok\) ||
      $line =~ ([0-9]+(\.[0-9]+){3})\ \(IP\ ok\) ]]; then
      host="${BASH_REMATCH[1]}"
    elif [[ $host != "" ]]; then
      if [[ $line =~ ^([0-9]+(\.[0-9]+){3}) ]]; then
        ip="${BASH_REMATCH[1]}"
        check_site $host $ip
      fi
    fi
  done < <(echo -e "$chunk") &

修改后可完整匹配到mysite.ch/home.html这类带路径的URL内容。

内容的提问来源于stack exchange,提问作者Marco Ferrara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:54:02