1 用法说明
- 从变量头开始删除匹配最短word子串
${变量#word} - 从变量头开始删除最长匹配的word
${变量##word} - 从变量结尾删除匹配最短的word
${变量%word} - 从变量结尾删除匹配最长word
${变量%%word} - 返回变量start数值之后的字符,且包含start(start表示字符串中字符的位置)
${变量:start} - 提取start之后的length限制字符个数(start表示字符串中字符的位置,length表示字符个数)
${变量:start:length} - 返回变量的长度
${#变量}
上面这种是最节省时间的,也可以
echo ${变量} | wc -L
expr length ${变量}
echo $变量|awk ‘{print length($0)}’ - 替换:
用string去替换第一个查找到的第一个parttern
${变量/parttern/string}
用string去替换查找到的所有parttern
${变量//parttern/string}
例子:
#!/bin/bash
name="hellloskljdlskajfdklja"
echo ${#name}
echo ${name} | wc -l
echo ${name} | wc -L
expr length ${name}
echo $name |awk '{print length($0)}'
#验证时间长短
time echo ${#name}
time echo ${name} | wc -l
time echo ${name} | wc -L
time expr length ${name}
time echo $name |awk '{print length($0)}'
echo ${name:4}
echo ${name:4:8}
echo "-----" ${name##helllo}
str="abcABC123ABCabc"
echo ${str##abc} #a*c
echo ${str#abc} #a*c
echo ${str%abc} # a*c
echo ${str%%a*c}
echo ${str/abc/kli}
echo ${str//abc/kli}
echo ${name/helllo/nihao}
批量修改文件名例子
#!/bin/bash
rm -rvf *.jpg *.png
#for var in {1..5}
#do
# touch "kli_"${var}"_finished.png"
# touch "kli_"${var}"_finished.jpg"
#done
touch "kli_"{1..5}"_finished.png"
touch "kli_"{1..5}"_finished.jpg"
ls
for var in `ls | grep kli`
do
mv $var ${var//_finished/}
done
ls
for var in `ls | grep kli`
do
mv $var ${var//./_finished.}
done
ls