我正在使用大型变量,因此使用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
可以在千兆字节之后输出千兆字节而没有问题。如果将其放入变量的原因是要对其执行多个步骤,请将其重写为管道。