如何将输出分配给两个 bash 数组变量

How can I assign output to two bash arrays variables

这里有大致相似的答案,但没有什么能真正回答我的问题。在我的 bash 脚本中,我必须从如下所示的输出中填充两个数组:

part-of-the-file1:line_32
part-of-the-file1:line_97
part-of-the-file2:line_88
part-of-the-file2:line_93

我需要做的是提取文件和行号在它们自己的单独数组中。到目前为止我有:

read FILES LINES <<<($(echo $INPUTFILES | xargs grep -n $id | cut -f1,2 -d':' | awk '{print " " }' 使用修改后的 IFS=':' 但这不起作用。我确信有更好的解决方案,因为我不是脚本或工具向导。

read 不能一次填充两个 数组 就像它可以使用分词填充两个常规参数一样。最好只是迭代管道的输出来构建数组。

while IFS=: read fname lineno therest; do
  files+=("$fname")
  lines+=("$lineno")
done < <(echo $INPUTFILES | xargs grep -n "$id")

在这里,我让 read 拆分和丢弃 grep 输出的尾端,而不是使用 cutawk .