0

我有以下 ksh 脚本要运行:

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

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

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

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

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

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

4

1 回答 1

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
于 2013-04-13T07:46:44.997 回答