我想用bash替換字符串,它將從當前正在運行的程序路徑中找到父路徑。Bash字符串替換,找到父路徑
所以我試圖消除一切,從過去的「/」用正則表達式的結尾:
echo ${0#/.*#}
但它不能正常工作,請不要讓我用外部程序,這是更好地獲得一切與bash ...
謝謝!
我想用bash替換字符串,它將從當前正在運行的程序路徑中找到父路徑。Bash字符串替換,找到父路徑
所以我試圖消除一切,從過去的「/」用正則表達式的結尾:
echo ${0#/.*#}
但它不能正常工作,請不要讓我用外部程序,這是更好地獲得一切與bash ...
謝謝!
你的意思是這樣的 -
[jaypal:~/Temp] a="/Volumes/Data/jaypalsingh/Temp/file.txt"
[jaypal:~/Temp] echo ${a%/*}
/Volumes/Data/jaypalsingh/Temp
所以我試圖消除一切,從過去的 '/' 用正則表達式的結尾:
> echo ${0#/.*#}
那不是一個正則表達式。此外,你不希望哈希字符(它刪除前綴),但%符號(刪除後綴)。在任何一種情況下,第二個哈希字符都不應該在那裏(這是/不是正則表達式,請參閱bash手冊中的PARAMETER EXPANSION章節)。
你可以使用
echo ${a%/*}
打印目錄(但這種突破是否 「$ A」 不包含斜槓),或
echo ${a##*/}
打印文件(注意雙##
刪除最長的匹配前綴)(但是如果「$ a」本身就是一個目錄,並且你只想要最後一個組件,就會中斷)。
這是更好地利用現有的命令
dirname "$a"
分別
和
basename "$a"
,