- 論壇徽章:
- 0
|
有少數(shù)時(shí)候,不想添加PATH,如何在腳本里面獲得所執(zhí)行腳本的絕對(duì)路徑?
例如:
/data/test/test1/upload.sh
情況1:root@TEST:/data/test# ./test1/upload.sh
情況2:root@TEST:/home#../data/test/test1/upload.sh
情況3:root@TEST:/home# /data/test/test1/upload.sh
我們要在upload.sh里面獲得upload.sh所在的絕對(duì)路徑
以上3種情況我們都要想獲得輸出:
/data/test/test1/upload.sh
實(shí)現(xiàn)此功能的shell腳本如下:
######################################################
#!/bin/sh
GetRealPath()
{
CommandPath=$0
CurrentPath=`pwd`
RealPath=${CommandPath}
One=`echo ${CommandPath} |awk -F'[/]+' '{if($1 == ""){print "r"}}'`
if [ "${One}" != "r" ]
then
Info=`echo ${CommandPath} |awk -F'[/]+' 'BEGIN{n=0}{for(i=1;i<=NF;i++){if($i == ".."){n=n+1}else{if($i != "" && $i != "."){printf "/%s",$i}}}}END{printf " %s",n}'`
n=`echo ${Info} |awk '{print $2}'`
Path1=`echo ${CurrentPath} |awk -F'/' '{for(i=1;i<=NF-'"$n"';i++){if($i != ""){printf "/%s",$i}}}'`
Path2=`echo ${Info} |awk '{print $1}'`
RealPath=${Path1}${Path2}
fi
}
GetRealPath
echo ${RealPath}
######################################################
然后通過獲得所執(zhí)行文件的絕對(duì)路徑來獲得其他文件的路徑,這是非常適用的!
歡迎拍磚!
[ 本帖最后由 luo339 于 2009-10-3 11:56 編輯 ] |
|