[英]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&W GU SEY
UR Dir
問題是我不明白如何計算$ PATH中的目錄以及如何在數組中設置它們
(當目錄包含空間時,它更加困難)
看起來路徑之間用反斜杠隔開,這意味着您可以將它們讀入數組,如下所示:
$ IFS='\' read -ra paths <<<"EMRA\ER1\C&W GU SEY\UR Dir"
$ for path in "${paths[@]}"; do
> echo "$path"
> done
EMRA
ER1
C&W GU SEY
UR Dir
我會在外殼中使用大寫的變量名,要小心。 特別是$PATH
是一個非常重要的內部變量!
正如JID所指出的,如果您只想打印路徑,而不是在循環中做任何其他事情,則可以只使用printf
:
printf '%s\n' "${paths[@]}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.