那是什么的KSH变量接受的最多字符数?(What is the maximum number of

2019-07-18 07:33发布

我试图加载和分析一个真正的大的文本文件。 虽然装载是没有问题的,但也有对单行2908778个字符特定行。

这是在我的脚本导致错误。

在下面的脚本,我删除了所有的逻辑和刚刚直至读取线。 我也删除了所有有效行,只是留在一个文本文件中的很长的线。 在运行时,我得到下面的错误:

$ dowhiledebug.sh dump.txt
dowhiledebug.sh[6]: no space
Script Ended dump.txt

实际的脚本:

 #!/bin/sh
 filename=$1
 count=1
 if [ -f ${filename} ]; then
    echo "after then"
    while read line;
            do
            echo "$count"
            count=$((count+1))
            done < $filename
 else
    echo "Could not open file $filename"
 fi
 echo "Script Ended $filename"

更新(2013年1月17日)

跟进的问题: 是否有可能增加的ksh变量接受的最多字符数?

Answer 1:

对于任何壳的极限是C命令行最大的极限。 下面是翻出的信息的小程序/usr/include/limits.h为您提供:

cpp <<HERE | tail -1
#include <limits.h>
ARG_MAX
HERE

矿山给我(256 * 1024)或262144个字符。

如果未安装C编译器不工作,但它可能是一个类似的限制。



Answer 2:

什么操作系统和ksh的版本? 你可以echo ${.sh.version}并获得价值? 如果是的话,请在你的问题包括以上。 或者这会是pdksh程序?

这是一个测试,将让你在球场,假设一个现代化的ksh支持(( i++ ))数学的评价:

#100 char var
var=1234578901234456789012345678901234567890123456789012345789012344567890123456789012345678901234567890

$ while (( i++ < 10000 )) ;do  var=$var$var ; print "i=$i\t" ${#var} ; done
i=1      200
i=2      400
i=3      800
i=4      1600
i=5      3200
i=6      6400
i=7      12800
i=8      25600
i=9      51200
i=10     102400
i=11     204800
i=12     409600
i=13     819200
i=14     1638400
i=15     3276800
i=16     6553600
i=17     13107200
i=18     26214400
i=19     52428800
i=20     104857600
i=21     209715200
i=22     419430400
-ksh: out of memory

$ print -- ${.sh.version}
Version JM 93t+ 2010-05-24

我ःŤः



文章来源: What is the maximum number of characters that the ksh variable accepts?