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&W GU SEY
UR Dir
问题是我不明白如何计算 $PATH 中的目录
以及如何在数组中设置它们
(当目录包含 space 时更困难)
看起来路径是由反斜杠分隔的,这意味着您可以像这样将它们读入数组:
$ 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
我会小心地在 shell 中使用大写变量名。 $PATH
特别是一个非常重要的内部变量!
正如 JID 指出的那样,如果您只想打印路径,而不是在循环中做任何其他事情,您可以只使用 printf
代替:
printf '%s\n' "${paths[@]}"
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 中的目录 以及如何在数组中设置它们
(当目录包含 space 时更困难)
看起来路径是由反斜杠分隔的,这意味着您可以像这样将它们读入数组:
$ 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
我会小心地在 shell 中使用大写变量名。 $PATH
特别是一个非常重要的内部变量!
正如 JID 指出的那样,如果您只想打印路径,而不是在循环中做任何其他事情,您可以只使用 printf
代替:
printf '%s\n' "${paths[@]}"