1.只替换第一个匹配结果
${变量名/old/new}
将第一个8替换为XX
#echo${phone/8/xx}
2.替换全部的匹配结果:
${变量名//old/new}
将phone变量中所有8给替换为xx
#echo ${phone//8/xx}
字符串掐头去尾:
# A = `head -1 /etc/passwd`
# echo $A
root:X:0:0root:/root:/bin/bash
1.从左往右,最短匹配删除:${变量名#*关键词}
删除做左侧第一个字符到最近的关键词“:”的部分,匹配所有
# echo ${A#:}
x:0:0:root:/root:/bin/bash
2.从左往右,最长匹配删除: ${变量名##关键词}
删除从左侧第一个字符到最远的关键词:
# echo ${A##}
/bin/bash
3.从右往左,最短匹配删除: ${变量名%关键词}
删除从右侧最后一个字符到往左最近的关键词:
# echo ${A%:*}
root:X:0:0:root:/root
4.从右往左,最长匹配删除: ${变量名%%关键词}
删除从右侧最后一个字符到往左最远的关键词:
# echo ${A%%:*
}
root
实例:
首先批量的创建以.doc结尾的文件
通过脚本,批量修改文件的后缀名,将.doc改为.txt
将/video目录下以.mp4结尾的文件,后缀改为.mkv
#!/bin/bash
for i in `ls /video/*.$1`
do
mv $1 ${i%.*}.$2
done
# sh renamefile.sh mp4 mkv