【发布时间】:2018-03-21 01:54:23
【问题描述】:
StackOverflow 上的第一篇文章,第一次使用 Bash。
我目前正在尝试构造一个函数来读取文件,然后根据状态给我输出:
- 如果是文件,则打印名称、大小和类型
- 如果是符号链接,则打印名称和目标
- 如果是目录,则递归调用每个项目的函数。
- 否则返回“未知”
到目前为止,我知道代码很粗糙,但我真正需要帮助的是递归循环部分。如何使用 While 循环遍历目录的内容?
到目前为止,这是我的代码:
#!/bin/bash
function fileChecker f {
if [-e $1 ]; then
if [ -f $1]; then
SIZE = 'du -k $1 | cut -f1'
CONTENT = 'file $1 | cut -d':' -f2'
echo $1 +" " + $SIZE + " " + $CONTENT
elif[ -h $1 ]; then
LINK = get info from $1
echo $1 + " " + "symbolic link " + $LINK
elif [ -d $1 ]; then
while [ ???? ]; do
fileChecker n
do
else
echo $1 + "unknown"
fi
fi
}
提前致谢!
【问题讨论】:
-
这里有一堆错误(与循环无关)shellcheck.net 将捕获。因为这是几个错误,而不是一个,所以单个问题的范围不是很大。
-
能否请您链接到您提到的问题?我很想看看它的笔记...
-
randomir 实际上在指出特定问题方面做得非常好(另外,如果您通过 shellcheck.net 运行代码,请参阅结果中的 wiki 链接)。也就是说,我确实链接到了与最初呈现的代码中存在的特定错误有关的四个问题——请参阅上面的列表,在顶部的“这个问题已经有答案:”标题下。
标签: bash recursion while-loop directory