我正在使用大型变量,因此使用while read line通过它们进行循环可能非常慢,我发现变量越小其运行速度越快。

如何将大变量拆分为较小的变量,然后一一读取?

例如,
我想实现的目标:

bigVar=$(echo "$bigVar" | split_var)

for var in "${bigVar[@]}"; do
  while read line; do
    ...
  done <<< "${var}"
done

或者可以拆分为bigVar1,bigVar2,bigVar3等。然后逐一阅读。

最佳答案

而不是做

bigVar=$(someCommand)
while read line
do
   ...
done <<< "$bigVar"

利用
while read line
do
   ...
done <   <(someCommand)

这样,您就可以完全避免使用大变量的问题,并且someCommand可以在千兆字节之后输出千兆字节而没有问题。

如果将其放入变量的原因是要对其执行多个步骤,请将其重写为管道。

10-05 21:28