定义字符串变量
table_name='maomao_table_temp_20220106'
获取变量字符串长度
# ${#变量名}
echo ${#table_name} # 结果: 26
字符串变量的位数截取
# 从左边开始截取 ${变量名:起始位置:截取位数};字符串就相当于字符数组,从0开始计算位数
echo ${table_name:7:5} # 结果: table
# 可以将截取位数省略,就相当于截取从起始位置开始直到末尾的字符
echo ${table_name:7} # 结果: table_temp_20220106
# 从右边开始截取 ${变量名:0-起始位置:截取位数}/${变量名: -起始位置:截取位数},只影响起始位置的判断。如下表示从倒数第8的位置往后截取4位
echo ${table_name:0-8:4} #结果: 2022
echo ${table_name: -8:4} #结果: 2022
# 可以省略截取位数,也相当于截取到末尾
echo ${table_name:0-8} # 结果: 20220106
echo ${table_name: -8} # 结果: 20220106
字符串变量的匹配截取
# 从左边开始匹配字符,删除包括匹配到的字符左边所有的字符 ${变量名#*匹配字符*匹配字符...},每写一个*匹配字符就从左边开始匹配删除一个匹配到的字符串
echo ${table_name#*_} # 结果: table_temp_20220106
echo ${table_name#*_*_} # 结果: temp_20220106
# 贪婪匹配 ${变量名##*匹配字符} 会尽可能多的删除字符串
echo ${table_name##*_} # 结果: 20220106
# 从右边开始匹配字符,删除包括匹配到的字符右边所有的字符 ${变量名%匹配字符*匹配字符*...},每写一个*匹配字符就从右边开始匹配删除一个匹配到的字符串
echo ${table_name%_*} # 结果: maomao_table_temp
echo ${table_name%_*_*} # 结果: maomao_table
# 贪婪匹配 ${变量名%%匹配字符*} 会尽可能多的删除字符串
echo ${table_name%%_*} # 结果: maomao
定义字符串变量
str='maomao_table_tmp_tmp_20220106'
字符串变量的匹配替换
# 从左边开始替换第一个匹配到的字符 ${变量名/匹配字符/替换字符}
echo ${str/tmp/TMP} # 结果: maomao_table_TMP_tmp_20220106
# 替换所有匹配到的字符 ${变量名//匹配字符/替换字符}
echo ${str//tmp/TMP} # 结果: maomao_table_TMP_TMP_20220106