截取字符串
1. 指定字符匹配字符串
# 去左留右, % 去右留左,不匹配则保留整个字符串
$ string='A/a/b/c/d/D'
$ echo ${string#*/}
a/b/c/d/D
$ echo ${string##*/}
D
$ echo ${string%/*}
A/a/b/c/d
$ echo ${string%%/*}
A
$ echo ${string%%a/*} # 提取‘a/’左侧内容
A/
2. 指定位置截取
左侧0起始,右侧0-1起始
$ echo ${string:3} # 左起第3位后到末尾
/b/c/d/D
$ echo ${string:3:3} # 左起第3位后取3位
/b/
$ echo ${string:0-7} # 右起第7位到末尾
b/c/d/D
$ echo ${string:0-7:3} # 右起第7位起取3位
b/c
字符串匹配特定起始/结尾/子串
1. 比较 ==
双中括号、字符串不需引号
$ if [[ $string == A* ]];then echo yes; else echo no;fi
yes
$ if [[ $string == *D ]];then echo yes; else echo no;fi
yes
$ if [[ $string == *d/* ]];then echo yes; else echo no;fi
yes
2. 正则匹配
$ if [[ $string =~ d/.* ]];then echo yes; else echo no;fi
yes
# 起始锚定 ^
$ if [[ $string =~ ^A.*d/.* ]];then echo yes; else echo no;fi
yes