【发布时间】:2015-06-17 15:21:53
【问题描述】:
作为课堂练习,我的教授要求全班将这个for 循环(有效)重写为while 循环或until 循环。任何帮助将不胜感激。
#!/bin/bash
set -x
#go to home directory
cd ~
for entry in `ls`
do
if [ -d "$entry"] ; then
echo "Dir: $entry"
else
echo "File: $entry"
fi
done
【问题讨论】:
-
ls的这种使用是一种反模式。请参阅 mywiki.wooledge.org/ParsingLs 和 mywiki.wooledge.org/DontReadLinesWithFor 了解原因。 -
既然您的教授希望您学习:研究 while 循环的工作原理:与 for 循环相比,while 循环的主要特征是什么。列出它们的行为有何不同,然后你就可以写出来了。
-
对于目录内容的操作,
for循环是自然(且正确)的模型。你有更多关于while/until逻辑应该如何在这里工作的说明吗?它只是“遍历所有文件”吗? -
假设
ls的使用只是一个示例程序(应该使用通配符,并且无论如何不推荐使用反引号)研究进程替换。 -
我们应该做的是让脚本执行与现在相同的功能,只是使用 while 或 until 循环代替
标签: bash for-loop while-loop