gpt4 book ai didi

linux - bash+dose for 循环有限制吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:17 25 4
gpt4 key购买 nike

我想知道for循环命令可以支持的最大数量是多少

例如我有 900 个 .txt 文件

当我运行 for 循环时,我看到所有文件都与 grep 匹配

但是 for 循环的剂量可以读取例如 20000 个文件?有什么限制?

ls | grep .txt | wc -l

950

for循环

 for FILE_NAME in ` ls | grep .txt `
do
grep WORD $FILE_NAME
done

最佳答案

for 循环这样的内置结构没有最大值:

for FILE_NAME in *.txt; do

可以将*.txt扩展为当前目录中存在的多个名称。由于 bash 扩展了模式并迭代结果,因此它可以自行管理列表。这同样适用于像

这样的内置命令
printf "%s\n" *.txt

因为 bash 都扩展了模式并在解释器进程本身中执行 printf

对比一下

ls *.txt

在这里,我们知道有两个独立的程序(bash 解释器和 ls)通过操作系统的 API 进行通信,以将参数传递给命令。 bash 必须将模式扩展到所有匹配的文件,它们将它们放入用于将参数传递给新进程的数组中(想想 main() 函数的 argv )。 数组的最大大小由操作系统定义,如果匹配文件太多,将导致“命令行太长”或“参数太多”错误。

关于linux - bash+dose for 循环有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26586443/

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