由于一些奇怪的原因,Unix脚本在循环上停滞/冻结


while read FILE;
do
echo "$FILE"
done

相当琐碎的代码…但我不知道是什么把它搞砸了……我看了所有地方,这似乎是正确的…

添加了引语但没有运气-

我正在尝试读取目录中的每个文件-尝试在第一行末尾添加"in $*;",但没有成功

那么是否有一种方法可以遍历所有文件并通过管道读取每个文件?

好的,有没有一种方法可以让它只迭代文件而不是目录?

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

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

while read FILE; do
  echo $FILE
done

如果要遍历目录中的每个文件,请使用

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

如果你想遍历给你脚本的参数,使用

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

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

例如:

echo $FILE

,但文件的值是hello; shutdown,你可能会在一个世界的伤害。:)

最新更新