由于一些奇怪的原因,Unix脚本停止/冻结循环?

时间:2014-06-04 19:57:22

标签: loops unix

while read FILE;
do

echo "$FILE"

done

相当琐碎的代码...但我不知道什么可能弄乱它......我到处都看这似乎是正确的......

添加了引文但没有运气 -

我正在尝试读取目录中的每个文件 - 尝试添加“in $ *;”没有运气的第一行结束

那么有没有办法迭代所有文件并管道每个文件来读取?

好的,有没有办法让它遍历ONLY文件而不是目录?

2 个答案:

答案 0 :(得分:1)

嗯,它没有冻结。它只是等待输入。这就是read FILE应该做的事情:从标准输入读取一行(=终端,除非存在重定向)并将其存储在FILE变量中。

顺便说一句,你可能想要删除一个额外的分号;或者你是否意味着写

while read FILE; do
  echo $FILE
done

如果您想迭代目录中的每个文件,请使用

for file in *; do
  echo "<$file>"
done

如果您想迭代给脚本的参数,请使用

for arg in "$@"; do
  echo "<$arg>"
done

答案 1 :(得分:0)

您可能应该使用echo“$ FILE”而不是echo $ FILE。请记住,$ FILE的内容将替换变量,然后执行命令。

例如,如果你刚才:

echo $FILE

但是文件的值是hello; shutdown,你可能会受到伤害。 :)