gpt4 book ai didi

bash - ksh 变量接受的最大字符数是多少?

转载 作者:行者123 更新时间:2023-11-29 09:24:17 37 4
gpt4 key购买 nike

我正在尝试加载和解析一个非常大的文本文件。虽然加载没有问题,但有些行在一行中有 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-01-17)

跟进问题:Is it possible to increase the maximum number of characters that ksh variable accepts?

最佳答案

什么操作系统和 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

这只是可以支持的环境的总体规模。在处理命令行环境和程序名称后的“单词”时,无论整体大小如何,单词的数量都有限制。

一些 shell 手册页将有一个 LIMITS 部分,它可能显示类似 max-bytes 200MB, max-args 2048 的内容。这些信息可能在不同的部分,它肯定会有不同的标签和不同的值,我已经包含了,或者它可能根本不存在,因此上面的代码循环,所以仔细看看,如果你找到这个信息的来源,或者为这个问题添加一个答案,或者更新这个问题。

bash 4.4 std 手册页似乎没有此信息,并且始终很难找到 ksh 文档。检查您的 man ksh 并希望您能找到记录在案的限制。

健康教育

关于bash - ksh 变量接受的最大字符数是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371326/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com