Linux对变量的截取替换

//对变量截取
${variable} 对变量值的修正(增删数据),仅仅修改输出后的结果对源值,并不做修改

#变数后对接字符
#  ##  //截取从前面开始
%  %%  //截取从后面开始
/  //   //替换

[root@dzswj-test ~]# vbird="/home/vbird/testing/testing.x.sh"
[root@dzswj-test ~]#
[root@dzswj-test ~]#echo $vbird
/home/vbird/testing/testing.x.sh

#{variable#}  //#从前面开始截取
#{variable##}变数名称后面两个##表示在 ##后面的字串取最长那一段;仅有一个# 表示取最小的那一段

[root@dzswj-test ~]#echo ${vbird##/*/}  //删除/*/中间的所有数据包括//  ##全部删除
testing.x.sh 
[root@dzswj-test ~]#echo ${vbird#/*/}  //仅仅删除第一次匹配的  #删除第一次匹配的
vbird/testing/testing.x.sh


#{variable%}  //%从后面开始截取
#{variable%%}变数名称后面两个%%表示在 %%前面的字串取最长那一段;仅有一个# 表示取最小的那一段

[root@dzswj-test ~]#echo $vbird
/home/vbird/testing/testing.x.sh

[root@dzswj-test ~]#echo ${vbird%%/*}  //从后面开始 * -->/ 最大匹配删除,因此给删完了

[root@dzswj-test ~]#echo ${vbird%/*}  //最短删除  /testing.x.sh
/home/vbird/testing

[root@dzswj-test ~]#echo ${vbird%/*/}  //最后一个字符开始/而真实的是h
/home/vbird/testing/testing.x.sh

[root@dzswj-test ~]#echo ${vbird%/*h} //最短删除后端h开头
/home/vbird/testing 
[root@dzswj-test ~]#
[root@dzswj-test ~]#
[root@dzswj-test ~]#echo ${vbird%%/*h} //全量删除,结尾--开头

[root@dzswj-test ~]#
[root@dzswj-test ~]#echo ${vbird%%/*/}  //为匹配到,因此未能删除
/home/vbird/testing/testing.x.sh


#变量截取替换字符
//  /
[root@dzswj-test ~]#echo ${vbird}
/home/vbird/testing/testing.x.sh
[root@dzswj-test ~]#
[root@dzswj-test ~]#
[root@dzswj-test ~]#echo ${vbird/testing/TEST}  //  /最前面匹配的替换
/home/vbird/TEST/testing.x.sh 
[root@dzswj-test ~]#
[root@dzswj-test ~]#echo ${vbird//testing/TEST}  // //全局匹配替换
/home/vbird/TEST/TEST.x.sh
posted @ 2019-05-26 10:12  mvpbang  阅读(1372)  评论(0编辑  收藏  举报