簡體   English   中英

bash-如何讀取WIN PATH並將每個單個目錄設置為array

[英]bash - how to read WIN PATH and set each single directory in to array

PATH值是一些WIN PATH(備注-$ PATH應該插入XML文件)

例:

 PATH="EMRA\ER1\C&W GU SEY\UR Dir"

要么

 PATH="TRQ\nb vf\EMRA\ER1\C&W GU SEY\Last Dir" 

 etc ..... so on

我的目標是創建bash腳本,以計算$ PATH中存在多少個目錄

並設置數組中的每個目錄

假設我們要從以下$ PATH打印目錄名稱

PATH="EMRA\ER1\C&W GU SEY\UR Dir"

那么我們將得到以下結果

for ((i=0;i<=$Num_of_dir_in_path;i+=1))
do 

[[ ! -z  ${DIR[$i]}  ]] && echo ${DIR[$i]}  

done



EMRA
ER1
C&amp;W GU SEY
UR Dir

問題是我不明白如何計算$ PATH中的目錄以及如何在數組中設置它們

(當目錄包含空間時,它更加困難)

看起來路徑之間用反斜杠隔開,這意味着您可以將它們讀入數組,如下所示:

$ IFS='\' read -ra paths <<<"EMRA\ER1\C&amp;W GU SEY\UR Dir"
$ for path in "${paths[@]}"; do
>    echo "$path"
> done
EMRA
ER1
C&amp;W GU SEY
UR Dir

我會在外殼中使用大寫的變量名,要小心。 特別是$PATH是一個非常重要的內部變量!

正如JID所指出的,如果您只想打印路徑,而不是在循環中做任何其他事情,則可以只使用printf

printf '%s\n' "${paths[@]}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM