方式1 ${}取字符串
记忆方法:(3个字符键盘位置 #$%
,#
是从左向右、%
是从右向左)
一个 # % 是匹配第一个,两个 ## %% 是匹配最后一个
# 定义一个字符 file
file=/dir1/dir2/dir3/my.file.txt
# 我们可以用 ${} 分别替换获得不同的值:
${file#*/} :拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#*.} :拿掉第一个 . 及其左边的字符串:file.txt
${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
${file%/*} :拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.*} :拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
方式2 :截取
${varible:n1:n2} :从左边数截取变量varible从n1到n2之间的字符串。
${varible:0-n1:n2}:从右边数截取变量varible从n1到n2之间的字符串。
MYVAR="food|forthought.jpg"
echo ${MYVAR:0:3} #foo
echo ${MYVAR:3} #d|forthought.jpg
echo ${MYVAR:0-3:2} #jp
echo ${MYVAR:0-3} #jpg
获取文件绝对路径
$(readlink -f $f)