如何拆分大变量



我正在使用大变量,并且使用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可以在Gogabyte之后输出Gigabyte,毫无问题。

如果您将其放入变量的原因是在多个步骤上进行工作,请将其重写为管道。

如果bigvar是用单词制成的,则可以使用 xargs将其划分为不超过命令行的最大长度,通常是32kb或64kb:

someCommand|xargs|while read line
do
    ...
done

在这种情况下, xargs使用其默认命令,即 echo

我很好奇您在循环中要做什么,因为它可以通过管道进行优化。

相关内容

  • 没有找到相关文章

最新更新