Bash脚本正则提取URL域名:如何将结果存入变量?
从URL提取域名并存入变量的解决方案
你的脚本中无法将提取结果存入DOMAIN变量的原因是赋值方式错误,Bash中要捕获命令的输出到变量,必须使用命令替换语法$(...)(或反引号,推荐前者)。
修正后的脚本
#!/bin/bash REGEX='(www\.)?\w*\.\w*' # 使用命令替换捕获grep的输出到变量 DOMAIN=$(echo "$1" | grep -P -o "$REGEX") echo "$DOMAIN"
说明
- 执行
./your_script.sh http://example.com/时,DOMAIN变量会正确存储example.com - 后续要将该变量传入其他脚本,直接用
./other_script.sh "$DOMAIN"即可(注意加双引号避免空格等特殊字符问题)
可选优化(适配复杂URL)
如果需要处理带路径、查询参数的URL(如https://www.example.co.uk/path?query=1),可以调整正则或结合awk分割来精准提取:
DOMAIN=$(echo "$1" | awk -F/ '{print $3}' | grep -P -o '(www\.)?\w+\.\w+(\.\w+)?')
内容的提问来源于stack exchange,提问作者vaso123
相关产品推荐
相关产品推荐

