2011-12-01 72 views
0

我想用bash替換字符串,它將從當前正在運行的程序路徑中找到父路徑。Bash字符串替換,找到父路徑

所以我試圖消除一切,從過去的「/」用正則表達式的結尾:

echo ${0#/.*#}

但它不能正常工作,請不要讓我用外部程序,這是更好地獲得一切與bash ...

謝謝!

回答

2

你的意思是這樣的 -

[jaypal:~/Temp] a="/Volumes/Data/jaypalsingh/Temp/file.txt" 
[jaypal:~/Temp] echo ${a%/*} 
/Volumes/Data/jaypalsingh/Temp 
4

所以我試圖消除一切,從過去的 '/' 用正則表達式的結尾:

> echo ${0#/.*#} 

那不是一個正則表達式。此外,你不希望哈希字符(它刪除前綴),但%符號(刪除後綴)。在任何一種情況下,第二個哈希字符都不應該在那裏(這是/不是正則表達式,請參閱bash手冊中的PARAMETER EXPANSION章節)。

你可以使用

echo ${a%/*} 

打印目錄(但這種突破是否 「$ A」 不包含斜槓),或

echo ${a##*/} 

打印文件(注意雙##刪除最長的匹配前綴)(但是如果「$ a」本身就是一個目錄,並且你只想要最後一個組件,就會中斷)。

這是更好地利用現有的命令

dirname "$a" 
分別

basename "$a"