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

时间:2015-10-05 15:59:15

标签: 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

我需要做的是将文件和行号拉出自己独立的数组。到目前为止,我有:

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

1 个答案:

答案 0 :(得分:5)

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

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

在此,我允许read分割并丢弃grep输出的尾端,而不是使用cut和{{ 1}}。