如何用Shell脚本提取URL的http/https协议?解析${A//:*}原理
Shell参数扩展与子串截取技巧解析
一、提取URL协议前缀(http/https)
我尝试了以下Shell脚本:
A=https://xyz.site echo -e ${A//:*}
结果: https
原理说明
${A//:*} 是Bash的参数扩展语法,核心逻辑如下:
- 语法格式为
${变量//匹配模式/替换内容},此处替换内容留空,实际作用是删除所有匹配到的子串 - 匹配模式
:*中,:是字面量匹配,*是通配符,会匹配:之后的任意长度字符(包括空字符) - 整个表达式执行后,会把变量
A里从第一个:开始到结尾的所有内容全部删除,剩下的就是:之前的协议前缀(http/https)
二、提取网址的www前缀
提取该前缀的方法十分简单:
A=www.google.com echo -e ${A::3}
结果: www
原理说明
${A::3} 是Bash的子串截取语法,格式为 ${变量::长度},表示从变量A的起始位置(默认从索引0开始)截取长度为3的子串,刚好对应www三个字符。
内容的提问来源于stack exchange,提问作者Mr.Derek
相关产品推荐
相关产品推荐

