bash - 如何读取 WIN PATH 并将每个目录设置为数组

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 中的目录 以及如何在数组中设置它们

(当目录包含 space 时更困难)

看起来路径是由反斜杠分隔的,这意味着您可以像这样将它们读入数组:

$ 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

我会小心地在 shell 中使用大写变量名。 $PATH特别是一个非常重要的内部变量!

正如 JID 指出的那样,如果您只想打印路径,而不是在循环中做任何其他事情,您可以只使用 printf 代替:

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