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