其中一个夜间流程已经开始悬挂。它只发生在一周一次,所以很难追查问题,但我已经缩小了做一个for循环。即使简化它所做的只是回显文件也不起作用。以下原因导致它挂起:
for i in `ls *`;do echo $i;done
以下工作正常:
for i in *;do echo $i;done
这是我们核心流程的一部分,虽然我可以从循环中删除ls
但我想知道为什么这种变化有效,特别是因为这段代码已存在多年而没有任何问题。没有大量的文件。昨晚只有9109,但这可能超过了ls
循环中的某个限制? ls
本身也很好用!
答案 0 :(得分:1)
ls *
列出了任何子目录的内容以及当前目录中的文件。你可能只想ls
而不是ls *
,甚至只是*
,因为ls
有些多余,而且你发现这种方法有效。
如果文件名包含空格或其他特殊字符,例如。
,也应该为文件名添加引号for i in *;do echo "$i";done