我在`ls *`中的shell脚本挂起

时间:2015-05-22 09:36:35

标签: shell for-loop

其中一个夜间流程已经开始悬挂。它只发生在一周一次,所以很难追查问题,但我已经缩小了做一个for循环。即使简化它所做的只是回显文件也不起作用。以下原因导致它挂起:

for i in `ls *`;do echo $i;done

以下工作正常:

for i in *;do echo $i;done

这是我们核心流程的一部分,虽然我可以从循环中删除ls但我想知道为什么这种变化有效,特别是因为这段代码已存在多年而没有任何问题。没有大量的文件。昨晚只有9109,但这可能超过了ls循环中的某个限制? ls本身也很好用!

1 个答案:

答案 0 :(得分:1)

ls *列出了任何子目录的内容以及当前目录中的文件。你可能只想ls而不是ls *,甚至只是*,因为ls有些多余,而且你发现这种方法有效。

如果文件名包含空格或其他特殊字符,例如。

,也应该为文件名添加引号
for i in *;do echo "$i";done