在bash语言中,如何定义路径列表?
我需要如下所示的东西:
list_of_paths = ["$Home/MyDir/test.c", "$Home/YourDir/file.c"]
答案1
bash
我可以使用以下命令创建一个数组
mypaths=( "/my/first/path" "/my/second/path" )
数组的元素也可以单独分配:
mypaths[0]="/my/first/path"
mypaths[1]="/my/second/path"
请注意, 周围不应有空格=
。
手册中的“数组”部分对此进行了描述bash
。
使用数组:
printf 'The 1st path is %s\n' "${mypaths[0]}"
printf 'The 2nd path is %s\n' "${mypaths[1]}"
for thepath in "${mypaths[@]}"; do
# use "$thepath" here
done
替代方案/bin/sh
(也可以在bash
许多其他sh
类似 shell 中工作):
set -- "/my/first/path" "/my/second/path"
printf 'The 1st path is %s\n' "$1"
printf 'The 2nd path is %s\n' "$2"
for thepath do
# use "$thepath" here
done
这使用 shell 中唯一的数组/bin/sh
,即位置参数列表($1
、$2
、$3
等,或统称为$@
)。该列表通常包含脚本或 shell 函数的命令行参数,但可以在脚本中使用set
.
最后的循环也可以写成
for thepath in "$@"; do
# use "$thepath" here
done
请注意,每个变量扩展的引用都很重要。