如何将输出分配给两个 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
输出的尾端,而不是使用 cut
和 awk
.
这里有大致相似的答案,但没有什么能真正回答我的问题。在我的 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
输出的尾端,而不是使用 cut
和 awk
.