从 URL 中提取不同种类的协议
Extract different kinds of protocol from URL
我有以下具有不同协议类型的 URL:
URL=https://example.com
URL=ftp://example.com
URL=ssh://example.com
URL=///filestore/storage
我正在使用 echo ${URL%://*}
获取协议,但对于 ///
它不起作用,无法应用多个正则表达式,请帮助
您可以使用这个扩展的 glob 匹配:
"${url%?(:)//*}"
其中 ?(:)
使用 扩展通配 后跟 //
匹配可选的 :
并且后跟任意数量的字符shell.
中的全局匹配
代码:
for url in 'https://example.com' 'ftp://example.com' 'ssh://example.com' '///filestore/storage'; do
echo "${url%?(:)//*}"
done
https
ftp
ssh
/
PS:在 BASH 版本 < 4 上,在此代码之前使用 shopt -s extglob
。
我有以下具有不同协议类型的 URL:
URL=https://example.com
URL=ftp://example.com
URL=ssh://example.com
URL=///filestore/storage
我正在使用 echo ${URL%://*}
获取协议,但对于 ///
它不起作用,无法应用多个正则表达式,请帮助
您可以使用这个扩展的 glob 匹配:
"${url%?(:)//*}"
其中 ?(:)
使用 扩展通配 后跟 //
匹配可选的 :
并且后跟任意数量的字符shell.
代码:
for url in 'https://example.com' 'ftp://example.com' 'ssh://example.com' '///filestore/storage'; do
echo "${url%?(:)//*}"
done
https
ftp
ssh
/
PS:在 BASH 版本 < 4 上,在此代码之前使用 shopt -s extglob
。