http://hi.chinaunix.net/?20535598/viewspace-42324
字符串截取
$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg
记忆方法:当搜索最长匹配时,使用 ##(因为 ## 比 # 长)。当搜索最短匹配时,使用 #。如何记住使用”#”字符来从字符串开始部分出去?在美国键盘上,shift-4 是 “$”,他是 bash 变量扩展字符。在键盘上,紧靠 “$” 左边的是 “#”。这样,能够看到:”#” 位于 “$” 的“开始处”,因此(根据我们的记忆法),”#” 从字符串的开始处除去字符。同理,使用”%”来从尾部截去字符串:
$ MYFOO=”chickensoup.tar.gz”
$ echo ${MYFOO%%.*}
chickensoup
$ echo ${MYFOO%.*}
更有另一种形式的变量扩展,来选择特定子字符串。
$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga
请注意命令替换$()和截断字符串${}的区别
file=”/data/download/DD0C17E310DDB4143CEAA584DA0917BEBD4FFD1800000000”
echo ${file%/*}
/data/download
echo ${file##*/}
DD0C17E310DDB4143CEAA584DA0917BEBD4FFD1800000000