Shell脚本截取字符串变量

对于一个数组,使用#表示删除左侧的部分,%表示删除右侧的部分,同时支持正则表达式。例如:

1
2
3
4
5
6
7
8
9
url="https://gitlab.com/fengzhenhua/script/-/raw/$USB_REMORT_SH\?inline\=false"
echo $url |sed -e 's/\(.\)/\1\n/g' |grep "/" |wc -l
> 7 # $url中一共有7个`/`
echo ${url#*//*/*/*/}
>
-/raw/$USB_REMORT_SH\?inline\=false
echo ${url%/${url#*//*/*/*/}}
>
https://gitlab.com/fengzhenhua/script

注意:此处不同与网上的教程,网上的一些教程如Shell 8种字符串截取方法等,指明了截取字符串时某一个字符的方法,但是对于*的理解没有做深入分析,而本文指出其代表若干字符,是正则表达式的一部分。于是在截取网址时,使用正则表达式给出*//*/*/*/方便的取得了相要的地址部分。