Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
`ls*`中i的shell脚本挂起_Shell_For Loop - Fatal编程技术网

`ls*`中i的shell脚本挂起

`ls*`中i的shell脚本挂起,shell,for-loop,Shell,For Loop,其中一个夜间进程已开始挂起。它大约一周只发生一次,所以很难追踪这个问题,但我已经缩小了范围,做了一个for循环。即使只是简单地回显文件也不起作用。以下情况导致其挂起: for i in `ls *`;do echo $i;done 鉴于以下情况适用: for i in *;do echo $i;done 这是我们核心流程的一部分,尽管我可以从循环中删除ls,但我想知道为什么会发生这种变化,特别是因为这段代码已经存在多年,没有任何问题。没有太多的文件。昨晚只有9109个,但这是否会超过循环中l

其中一个夜间进程已开始挂起。它大约一周只发生一次,所以很难追踪这个问题,但我已经缩小了范围,做了一个for循环。即使只是简单地回显文件也不起作用。以下情况导致其挂起:

for i in `ls *`;do echo $i;done
鉴于以下情况适用:

for i in *;do echo $i;done

这是我们核心流程的一部分,尽管我可以从循环中删除
ls
,但我想知道为什么会发生这种变化,特别是因为这段代码已经存在多年,没有任何问题。没有太多的文件。昨晚只有9109个,但这是否会超过循环中
ls
的某个限制
ls
单独工作也很好

ls*
列出任何子目录的内容以及当前目录中的文件。您可能只想要
ls
,而不是
ls*
,或者甚至只想要
*
,因为
ls
有些冗余,您发现这是可行的

如果文件名包含空格或其他特殊字符,则还应为文件名添加引号,例如

for i in *;do echo "$i";done

它不能回答你的问题(希望我是在向皈依者宣讲),但绝对没有理由在
*
上使用
ls*
,因此无论如何你都应该删除它。这不是一种可能的情况,正如你所示,在地球上循环是正确的方式。关于子目录的观点很好。@TomFenech:true-“可能”现在从答案中删除了。;-)虽然我承认ls*不是一种很好的编码方式,而且确实需要改变,但它并不能回答为什么它现在会崩溃。当前目录中没有子目录,因此其他位置的文件不应影响此操作。您可能需要提供更多详细信息。文件名中是否有空格或特殊字符?您确定没有隐藏的子目录(名称以
开头,例如
.git
)吗?目录是否在服务器上?您使用的是什么操作系统?目录中有9109个文件,没有子目录。所有文件的格式完全相同-xxxxxx\u nnnnnnnn\u nnnnnn.dat,其中x为字母,n为数字。没有子目录(即使是隐藏的子目录)。