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

如何在Bash脚本中实现从各类URL提取domain.tld的check_domain函数?

Bash check_domain 函数实现

直接使用如下函数即可覆盖你列举的所有输入场景:

function check_domain() {
    # 处理输入URL,提取目标域名
    local raw_url="$1"
    # 移除协议头、www前缀,再截断后续路径/参数部分
    local domain=$(echo "$raw_url" | sed -E 's/(^https?:\/\/)?(www\.)?//i' | cut -d '/' -f 1)

    # 两种输出方式二选一:
    # 方式1:直接打印结果,外部可通过变量接收,比如 res=$(check_domain "https://www.test.com")
    echo "$domain"
    
    # 方式2:写入全局变量供外部直接调用
    # DOMAIN_RESULT="$domain"
}

测试验证

你可以用以下命令测试所有示例场景:

# 测试用例
check_domain http://domain.tld          # 输出 domain.tld
check_domain https://domain.tld         # 输出 domain.tld
check_domain http://www.domain.tld      # 输出 domain.tld
check_domain https://www.domain.tld     # 输出 domain.tld
check_domain www.domain.tld             # 输出 domain.tld
check_domain domain.tld                 # 输出 domain.tld
check_domain https://stackoverflow.com  # 输出 stackoverflow.com
check_domain http://www.stackoverflow.com # 输出 stackoverflow.com

实现逻辑说明

  • sed -E 's/(^https?:\/\/)?(www\.)?//i' 部分使用扩展正则,匹配开头可选的http/https协议头(末尾i参数忽略大小写,兼容HTTP://这类大写开头的输入)、以及可选的www.前缀,匹配到的内容直接替换为空
  • cut -d '/' -f 1 部分用于兼容带路径的URL输入,比如https://www.domain.tld/post/1,按/切割后取第一部分,仅保留域名内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:01