shell脚本编程-字符串截取-字符串初值设置
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:0: root: , 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/*.mp4`
do
mv $i ${i%.*}.mkv
done
升级脚本:
#!/bin/bash
for i in `ls /video/*.$1`
do
mv $i ${i%.*}.$2
done
# sh renamefile.sh mp4 mkv