这是一个后续问题
什么是kshvariables接受的最大字符数?
我检查了我的环境,它只允许
#include <sys/limits.h> $ cpp << HERE | tail -1 > #include <limits.h> > ARG_MAX > HERE 1048576
有没有办法增加这个? 或者任何替代品
while read line; do #parse logic done < $filename
处理真的很长的路线? 根据我parsing的logging,它不会停在2M字符行。
环境细节:
AIX $ KSH Version M-11/16/88f
你可以编译一个Linux 3.7.x内核,并编辑它的include/uapi/linux/limits.h
文件来增加ARG_MAX
参数(对于两个更大的幂,例如2097152)。 但是如果你想增加更多内存,你应该有更多的内存(例如8GB)。
实际限制与execve(2)有关 。 该手册页上有一个段落。
但是你可以避免拥有巨大的shell变量(在Unix环境中)。 你有没有考虑使用其他工具( awk
, python
, perl
….)来读取你的文件? 它们的变量环境并不是传递给分叉程序的shell环境,所以它们可以具有非常长的值。 也许ksh
有一些builtin( unexport
)来避免将一些变量导出到Unix环境中。