Gel*_*ser 4 bash segmentation-fault
我的任务是编写一个 bash 脚本,该脚本读取目录并返回其中每个文件(包括所有子目录)的文件类型。不允许使用 find 命令。我尝试使用两个 for 循环来实现这一点,但出现了分段错误。但是,我发现当我传递没有子目录的目录时,该脚本确实有效。有人愿意查看菜鸟的代码并告诉我出了什么问题吗?非常感谢。
#!/bin/bash
func () {
for name in $1
do
if [ -f "$name" ]
then
file "$name"
elif [ -d "$name" ]
then
func "$1"
fi
done
}
directory="$1/*"
for name in $directory
do
if [ -f "$name" ]
then
file "$name"
elif [ -d "$name" ]
then
func "$1"
fi
done
Run Code Online (Sandbox Code Playgroud)
fra*_*ous 12
如果它正在处理的“ $name
”是一个目录,则需要调用func
其内容,而不是原始参数,否则会出现无限循环,从而出现段错误。
通过在原始参数上使用函数,并将该函数分别应用于每个项目,可以大大减少您的代码。无论如何,现在您正在重复主体函数中发生的大部分事情。
#!/bin/bash
func () {
local arg="$1"
if [[ -f "$arg" ]] ; then
file -- "$arg"
return
fi
if [[ -d "$arg" ]] ; then
for file in "$arg"/* ; do
func "$file"
done
fi
}
func "$1"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4254 次 |
最近记录: |