我在bash中的while循环有一个问题。 我从文件中读取文件名,然后我想处理它们。 问题是,while循环停在最后一行,而没有处理它,这迫使我们在该文件上有一个空的最后一行(有些往往会被删除)。 有没有办法循环包括最后一行?
#datafile filename1 filename2
while read project_name do echo $project_name done < "datafile"
这将打印出filename1但不是2。
BRG Anders Olme
问题是你在文件末尾没有换行符。 按照这个问题,你应该在读执行之后评估退出代码。 在链接中更好的解释。
#!/bin/bash DONE=false until $DONE ;do read LINE || DONE=true echo $LINE done < "datafile"
你应该用for / cat来试试看看你是否看到相同的行为:
for project_name in $(cat datafile) do echo $project_name done
但是我可以想象,为什么你原来的例子不能工作。