【问题标题】:array size limit in kshksh 中的数组大小限制
【发布时间】:2013-04-12 19:38:50
【问题描述】:

我要运行以下 ksh 脚本:

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

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

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

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

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

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

【问题讨论】:

    标签: ksh


    【解决方案1】:

    您当然可以使用更新版本的 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
    

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 2012-05-13
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2010-10-06
      相关资源
      最近更新 更多