1: shell 中比较好用的获得字符串的两个函数是basename 和dirname .其中basename得到具体文件名(或目录中的最后那部分),另外的部分可以由dirname得到:
> basename /r/sanyo.unx.sas.com/vol/vol5/u51/scnyam/meiplaypen/mei_shell
mei_shell
> dirname /r/sanyo.unx.sas.com/vol/vol5/u51/scnyam/meiplaypen/mei_shell
/r/sanyo.unx.sas.com/vol/vol5/u51/scnyam/meiplaypen
2: 但是这种处理显然无法满足所有类型字符串的截取要求。 不过不用担心,bash本身有它截取字符串的简单方法:
我们来看下面的例子:
var=PeterPiPerPickedofPick # PeterPiperPickedaPeckofPickledPepper (the famsous and classic tongue twister, coudl you speak it correctly and fluently??)
> echo ${var#*Pe}
terPiPerPickedofPick
> echo ${var##*Pe}
rPickedofPick
> echo ${var%Pi*}
PeterPiPerPickedof
> echo ${var%%Pi*}
Peter
看到了吗? #是从左侧替换 进行替换,%是从右侧。为什么呢? 因为键盘上的位置是:#$% 即#在$的左边, %在$的右边。
神秘吧?
小例子:
#!/bin/bash
if [ "${1##*.}" = "tar" ]
then
echo This appears to be a tarball.
else
echo At first glance, this does not appear to be a tarball.
fi
参考文章: 截断字符串概述, 位置找不到了。
阅读(1370) | 评论(0) | 转发(0) |