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

jiv*_*key 0 linux bash sh

这里有一些模糊的答案,但没有什么可以真正回答我的问题.我正处于我的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
Run Code Online (Sandbox Code Playgroud)

我需要做的是在自己独立的数组中提取文件和行号.到目前为止,我有:

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

che*_*ner 5

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

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

在这里,我正在read分割和丢弃grep输出的尾端而不是使用cut和awk.