if [ -z "$1" ]; then
echo "Usage: abspath2rel.sh abs_path"
exit 1
fi
if [ `expr x"$1" : x'/'` -eq 0 ]; then
echo "$1: not an absolute path"
exit 1
fi
org=`expr x"$PWD" : x'/\(.*\)'`
abs=`expr x"$1" : x'/\(.*\)'`
rel="."
org1=""
abs1=""
while true; do
org1=`expr x"$org" : x'\([^/]*\)'`
abs1=`expr x"$abs" : x'\([^/]*\)'`
[ "$org1" != "$abs1" ] && break
org=`expr x"$org" : x'[^/]*/\(.*\)'`
abs=`expr x"$abs" : x'[^/]*/\(.*\)'`
done
if [ -n "$org" ]; then
_IFS="$IFS" ; IFS='/'
for c in $org; do
rel="$rel/.."
done
IFS="$_IFS"
fi
if [ -n "$abs" ]; then
rel="$rel/$abs"
fi
rel=`expr x"$rel" : x'\./\(.*\)'`
echo "$rel"
$ ./abspath2rel.sh /usr/bin/sh
../../../../usr/bin/sh