22.dirname或参数扩展提取目录名
例如从$0参数中提取运行的路径:从../../etc/passwd/得到../../etc,从/etc/passwd得到/etc
方法一:dirname
c_path=$0
c_path=`dirname $c_path`
注:如果没有路径,则c_path得到为单字符”.”。所以,判断是否在当前路径执行可以使用条件 “-$c_path” = “-.”
方法二(参数扩展在基本sh下不支持):
c_path=$0
c_path=’${0%/*}’
注:如果没有路径,则c_path得到为文件名,即$0。所以,判断是否在当前路径执行可以使用条件 “-$c_path” = “-$0”
23.grep,sed获取文件的扩展名
例如从../../home/file.c得到c
方法一:
file=$1
#得到最后一级文件名 ,如file.c
file=`basename$file`
#如果文件名中不含有.,则表示没有后缀
if[ 1 -gt `echo $file | grep -c '\.'` ]; then
echo "no extion"
else
#过滤掉最后一个.以及之前的所有字符,得到扩展名
echo `echo $file | sed "s/.*\.//g" `
fi
方法二:(参数扩展在基本sh下不支持)
file=$1
#得到最后一级文件名 ,如file.c
file=`basename $file`
#从file的尾部开始删除匹配.*(一个.后跟若干字符)的最小部分并返回剩余部分
echo "${file%.*}"