一个获得相对路径的脚本
小例子:
$ getrelpath d:/HelloWorld/b d:/HelloWorld/a/bbb/c.jpg
../a/bbb/c.jpg
源文件:
#!/usr/bin/bash
# get relative pathname of a file from a given dir
# Michael.Fantasia@Gmail.com
if [ "$#" -ne "2" ]
then
echo "Usage: $(basename $0) dirname filename" >&2
exit 1
fi
dirname=$(echo $1/ | sed 's@/*$@/@')
if [ -d "$2" ]
then
filename=$(echo $2/ | sed 's@/*$@/@')
else
filename=$2
fi
path='[^/]*/'
i=1
while [ "$i" -ne "0" ]
do
pathdir=$(k=0;while [ "$k" -lt "$i" ];do echo -n $path;let k=$k+1;done)
str1=$(expr "$dirname" : '\('"$pathdir"'\)')
str2=$(expr "$filename" : '\('"$pathdir"'\)')
if [ "$str1" != "$str2" -o -z "$str1" ]
then
let i=$i-1
break
fi
let i=$i+1
done
if [ "$i" -eq "0" ]
then
echo $2
exit 0
fi
pathdir=$(k=0;while [ "$k" -lt "$i" ];do echo -n $path;let k=$k+1;done)
str1=$(echo $(expr "$dirname" : "$pathdir"'\(.*\)')/ | sed 's@/*$@/@;s@[^/]\+@\.\.@g')
str2=$(expr "$filename" : "$pathdir"'\(.*\)')
echo $str1$str2 | sed 's@^/@\./@'
exit 0



没有评论:
发表评论