ksh中的数组大小限制

时间:2013-04-12 19:38:50

标签: ksh

我要运行以下ksh脚本:

temp=`<some_command>`
eval set -A array $temp

变量temp包含命令的输出,输出为空格分隔的字符串。

但在某些情况下,我会遇到以下错误:

 array: 0403-046 The specified subscript cannot be greater than 4095.

在这种情况下,有没有办法将数组设置为temp中前4096个以空格分隔的字符串?

另一种方法是将输出从<some_command>(输出到stdout)限制为不超过4096行(每行一个字符串)。这可以用ksh完成吗?

1 个答案:

答案 0 :(得分:2)

您当然可以使用更新版本的ksh93 - 对数组大小有更大的限制。如果这不是一个选项,请尝试以下方法:

# some_command <n> produces <n> lines of text:
$ function some_command {
     echo a{1..$1} | tr ' ' $'\n'
}
$ some_command 5
a1
a2
a3
a4
a5

这是你的答案:

$ set -A array $(
     some_command 4100 | head -4096
)
$ echo ${#array[@]}
4096