Linux 如何拆分大变量?

Linux 如何拆分大变量?,linux,bash,loops,variables,large-data,Linux,Bash,Loops,Variables,Large Data,我使用的是大变量,在读取行时,使用可以非常缓慢地“循环”它们,我发现变量越小,工作越快 如何将大变量拆分为小变量,然后逐个读取它们 比如说,, 我希望达到的目标是: bigVar=$(echo "$bigVar" | split_var) for var in "${bigVar[@]}"; do while read line; do ... done <<< "${var}" done bigVar=$(echo“$bigVar”| split_var)

我使用的是大变量,在读取行时,使用
可以非常缓慢地“循环”它们,我发现变量越小,工作越快

如何将大变量拆分为小变量,然后逐个读取它们

比如说,, 我希望达到的目标是:

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

for var in "${bigVar[@]}"; do
  while read line; do
    ...
  done <<< "${var}"
done
bigVar=$(echo“$bigVar”| split_var)
对于“${bigVar[@]}”中的变量;做
读行时;做
...
完成而不是做

bigVar=$(someCommand)
while read line
do
   ...
done <<< "$bigVar"
bigVar=$(someCommand)
读行时
做
...

完成如果BigVar由单词组成,则可以使用
xargs
将其拆分为不超过命令行最大长度的行,通常为32kb或64kb:

someCommand|xargs|while read line
do
    ...
done
在这种情况下,
xargs
使用其默认命令,即
echo


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

$bigVar
中有什么样的数据?你能举个具体的例子吗?首先,最好不要在变量中存储大量数据。不要使用
split\u var
is或
echo
bigvar,只需将
IFS
设置为要拆分的变量,子字符串扩展呢
s=“somebigvariable”;echo“${s:0:7}/${s:7}”
。。或者可能是((i=0;我只是好奇,为什么第一种方法比第二种方法慢?第一种方法会从进程中读取变量,并重复重新定位变量以将其全部保存在内存中,变量越大,这会花费越来越多的时间。然后,它复制数据以进行字符串扩展,并且必须将其提供给while read命令。只有这样,while read才能开始读取。使用第二种方法,命令输出直接馈送到循环,让它更快地开始,并减少总工作量。感谢您的解释。因此,第一种方法必须在
while
循环的每次迭代中复制
“$bigVar”
,因为它无法知道是否(
$bigVar
)自上次迭代以来是否已更改?
someCommand|xargs|while read line
do
    ...
done