如何解决将大量数据传递到CLI命令
假设我有10MB的字符串要传递给CLI命令。
我可以直接在CLI中传递它吗?例如。 my_cmd "my_string"
还是my_cmd << file_with_data
?
还是我必须先将其写入磁盘,然后命令内部读取文件?
我可以向命令传递字符串的存储位置吗?
还有哪些其他选择?
====
编辑: 明确地说,我的问题是关于通过CLI传递巨大字符串。有尺寸限制吗?还有其他问题吗?
编辑2: 我会将这些数据从程序传递给以不同语言编写的子进程。
解决方法
10MB应该不是问题,您可以这样验证;
使用以下命令生成10MB random data:
base64 /dev/urandom | head -c 10000000
,现在使用<<<
将其提供给您的命令;
wc -l <<< $(base64 /dev/urandom | head -c 10000000) # 0.42s
grep -i 'z' <<< $(base64 /dev/urandom | head -c 10000000) # 0.61s
我正在使用Unix time检查持续时间
如果您希望(临时)将数据写入文件,请使用:
base64 /dev/urandom | head -c 10000000 > file_10_mb.txt
wc -l < file_10_mb.txt # 0.01s
grep 'z' < file_10_mb.txt | wc -l # 0.07
如果您的my_cmd
不需要很多资源,那么10MB应该可以正常工作
要获得限制的答案,请在此处查看相关问题和答案:About command line arguments of main function 看来10 MB有点大,并且比Posix的最小值4096大得多。在我的AMD64 Linux上,该限制约为2 MiB。
要获得更好的选择:有文件,管道(包括stdin和stdout),套接字或共享内存。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。