亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 10021 | 回復(fù): 18
打印 上一主題 下一主題

【分享】任意路徑執(zhí)行腳本獲得所執(zhí)行腳本的絕對(duì)路徑 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-10-03 11:35 |只看該作者 |倒序?yàn)g覽
有少數(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 編輯 ]

論壇徽章:
7
酉雞
日期:2013-10-30 17:17:51水瓶座
日期:2014-01-25 14:47:21天秤座
日期:2014-02-20 09:49:50處女座
日期:2014-11-04 17:44:082015年亞洲杯之中國
日期:2015-03-09 17:21:312015亞冠之北京國安
日期:2015-06-01 16:58:552015亞冠之山東魯能
日期:2015-06-19 11:30:08
2 [報(bào)告]
發(fā)表于 2009-10-03 13:54 |只看該作者
如果系統(tǒng)中有/proc文件系統(tǒng),可以使用/proc/$$/cwd獲得shell的全路徑。

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀(jì)念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀(jì)念章
日期:2022-04-24 14:33:24
3 [報(bào)告]
發(fā)表于 2009-10-03 17:25 |只看該作者
不錯(cuò),感謝分享。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-10-03 21:14 |只看該作者
學(xué)習(xí)學(xué)習(xí)

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-10-04 09:36 |只看該作者

回復(fù) #1 luo339 的帖子

新情況:root@TEST:/home#../data/test/../test/test1/upload.sh
運(yùn)行結(jié)果就錯(cuò)了

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2009-10-04 12:05 |只看該作者
原帖由 marksman201 于 2009-10-4 09:36 發(fā)表
新情況:root@TEST:/home#../data/test/../test/test1/upload.sh
運(yùn)行結(jié)果就錯(cuò)了



是的,這種特殊情況下是不行的,但實(shí)際上自己一般也不會(huì)這樣寫的

1.root@TEST:/home#../data/test/../test/test1/upload.sh

2.root@TEST:/home#../data/test/test1/upload.sh

1是故意繞了彎子,2和1是等價(jià)的

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2009-10-04 15:39 |只看該作者
這樣太麻煩了吧。
這樣就OK了

#!/bin/bash

cd `echo ${0%/*}`
abspath=`pwd`
abspath=$abspath/`basename $0`
echo $abspath

論壇徽章:
5
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亞洲杯之朝鮮
日期:2015-03-13 22:47:33IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-09 06:20:00IT運(yùn)維版塊每周發(fā)帖之星
日期:2016-03-07 16:27:44
8 [報(bào)告]
發(fā)表于 2009-10-05 08:13 |只看該作者
研究研究!

論壇徽章:
7
酉雞
日期:2013-10-30 17:17:51水瓶座
日期:2014-01-25 14:47:21天秤座
日期:2014-02-20 09:49:50處女座
日期:2014-11-04 17:44:082015年亞洲杯之中國
日期:2015-03-09 17:21:312015亞冠之北京國安
日期:2015-06-01 16:58:552015亞冠之山東魯能
日期:2015-06-19 11:30:08
9 [報(bào)告]
發(fā)表于 2009-10-05 10:34 |只看該作者
如果shell中沒有改變當(dāng)前路徑,可以使用下面的命令獲取shell全路徑。
RealPath=`ls -l /proc/$$/cwd|sed 's/^.*> *//'`$0

[ 本帖最后由 syncpk99 于 2009-10-5 10:41 編輯 ]

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2009-10-05 10:40 |只看該作者

回復(fù) #9 syncpk99 的帖子

你這個(gè)得到的不是腳本所在的路徑
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP