我们有一个包含大量项目的 git 存储库,每个项目都有一个 OWNERS 文件,其中一行像“teams/search”,没有引号。我想以某种方式找到所有这些文件并创建一个元组数组,其中元组是[文件名,文件内容]。
我可以找到所有文件
find java -name "OWNERS"
很好,或者我可以像这样对内容进行分类
find java -name "OWNERS" | cat
我怎样才能创建数组呢?之后的下一步是遍历数组(我想我知道如何做到这一点,尽管我的 bash 生锈了),我可以通过 cd 创建符号链接到团队目录和 ln -s {full file path}
bash 数据结构不够复杂,无法创建元组数组。您可以创建字符串数组或关联数组。
我假设 OWNERS 文件的路径名中没有换行符。
Bash 对名称中带有空格的文件名非常敏感,因此您需要引用所有变量。
一些注意事项:
mapfile -t ary < <(some command)
--some command
在子shell 中运行并将输出读入一个数组,每个元素一行。some command | mapfile -t ary
因为 bash 在单独的子 shell 中运行管道命令,这意味着数组将在子 shell 中创建,因此当子 shell 退出时数组将消失。mapfile
command , 3.5.6 进程替换$(<file)
$(cat file)
是一种无需调用外部命令的内置方式。记录在3.5.4 命令替换中格伦的解决方案效果很好!我相信 bash 早在 2019 年就更新了他们的数据结构?(我检查的最后一个)支持mapfile..?它适用于数组(并且调整也适用于地图)。
下面是一个示例 pre-mapfile 版本,我快速将其放在一起用于将内容转储到数组中。