这是
的后续问题What is the maximum number of characters that the ksh variable accepts?
我检查了我的环境,它只允许
#include <sys/limits.h>
$ cpp << HERE | tail -1
> #include <limits.h>
> ARG_MAX
> HERE
1048576
有没有办法增加这个? <或
的任何替代方案 while read line;
do
#parse logic
done < $filename
要处理真正的长线?根据我正在解析的记录,它不会停留在2M字符行。
环境详情:
AIX $ KSH Version M-11/16/88f
答案 0 :(得分:3)
您可以编译Linux 3.7.x内核,并编辑其include/uapi/linux/limits.h
文件以增加ARG_MAX
参数(更大的两个幂,例如2097152)。但是如果你想增加更多内存,你应该有更多的RAM(例如8GBytes)。
实际限制与execve(2)有关。该手册页上有一个段落。
但是你可以避免使用巨大的shell变量(在Unix环境中)。您是否考虑使用其他工具(awk
,python
,perl
....)来阅读您的文件?它们的变量环境不是传递给分叉程序的shell环境,因此它们可以包含具有很长值的变量。也许ksh
有一些内置(unexport
)以避免将某些变量导出到Unix环境中。