![在bash语言中,我如何定义文件路径列表?](https://linux22.com/image/135980/%E5%9C%A8bash%E8%AF%AD%E8%A8%80%E4%B8%AD%EF%BC%8C%E6%88%91%E5%A6%82%E4%BD%95%E5%AE%9A%E4%B9%89%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84%E5%88%97%E8%A1%A8%EF%BC%9F.png)
在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
请注意,每个变量扩展的引用都很重要。