模式匹配运算符--Shell

Var=/home/firefox/MyProgram/fire.login.name
${Variable#pattern}:如果模式匹配于变量值的开头处,则删除匹配的最短部分,并且返回剩下的部分例子:
[fire]$ echo ${Var#*/} [fire]$ home/firefox/MyProgram/fire.login.name [fire]$ echo ${Var#/*/} [fire]$ firefox/MyProgram/fire.login.name [fire]$ echo ${Var#*.} [fire]$ login.name

${Variable##pattern}:如果模式匹配于变量值的开头处,则删除匹配的最长部分,并且返回剩下的部分
例子
[fire]$ echo ${Var##*/} [fire]$ fire.login.name [fire]$ echo ${Var##/*/} [fire]$ fire.login.name [fire]$ echo ${Var##*.} [fire]$ name

${Variable%pattern}:如果模式匹配于变量值的结尾处,则删除匹配的最短部分,并且返回剩下的部分
例子
[fire]$ echo ${Var%/*} [fire]$ /home/firefox/MyProgram [fire]$ echo ${Var%.*} [fire]$ /home/firefox/MyProgram/fire.login

${Variable%%pattern}:如果模式匹配于变量值的结尾处,则删除匹配的最长部分,并且返回剩下的部分
例子
[fire]$ echo ${Var%%/*} [fire]$ [fire]$ echo ${Var%%.*} [fire]$ /home/firefox/MyProgram/fire

${#Variable}:返回$Variable值里的字符长度
[fire]$ echo ${#Variable} [fire]$ 39

 

 
#!/bin/bash #移动当前目录下所有.c文件重命名为file-[Number].c,排序 loop=1; while [ $loop -lt 10 ] do file="$loop.c" touch $file let loop++ done iCounter=1 for temp in *.c do New=file-$iCounter.${temp#*.} mv $temp $New 2> /dev/null if [ $? -eq 0 ]; then echo "rename $temp to $New" let iCounter++ fi done

标签:Linux, Shell

评论已关闭