在 Bash 腳本中,我想根據它包含的最后一個“/”將一個字串拆分為另外兩個字串。
在給定字串為 的情況下"Example/Folder/Structure",我想創建另外兩個具有以下值的字串:
string 1 = "Example/Folder"
string 2 = "Structure"
我正在嘗試創建一個腳本來獲取 iOS 應用程式中給定檔案夾的覆寫率報告。雖然我對 Bash 的了解很少,但當給定檔案夾位于專案的根目錄中時,我能夠讓它作業。現在我想讓腳本能夠處理路徑,以便我也可以獲得子檔案夾的報告,為此我需要將所需的檔案夾與路徑的其余部磁區分開來。
uj5u.com熱心網友回復:
基本名稱(1),目錄名稱(1):
path=a/b/c
basename=$(basename "$path") # c
dirname=$(dirname "$path") # a/b
前綴/后綴洗掉:
path=a/b/c
basename=${path##*/} # c
dirname=${path%/*} # a/b
- 在某些情況下,去除前綴/后綴就足夠了,而且速度更快,因為它是原生 shell。
- dirname/basename 命令較慢(尤其是回圈中的許多路徑等),但處理更多可變輸入或目錄深度。
- 例如。
dirname "file"列印.,但后綴洗掉會列印file。dirname /dir列印/,但后綴洗掉列印空字串;dirname 還處理連續的斜杠 (dirname a//b);basename a/b/列印b,但前綴洗掉列印空字串。 - 如果您知道結構始終是 3 個斜杠 (
a/b/c),則使用前綴/后綴洗掉可能是安全的。但在這里我會使用 basename 和 dirname。 - 還要考慮是否更好的方法是使用 更改作業目錄
cd,這樣您就可以使用.(還有$PWD和$OLDPWD)來參考當前目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/524699.html
標籤:细绳重击壳
