我要运行以下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完成吗?
答案 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