我用shell编写的遍历当前目录及所有子目录找mac.c这个文件,有问题希望大家帮忙看一下 10
#!/bin/shsearch(){forfilein`ls$1`doif[-d$file]thensearch"$1/$file"elif["$file"="mac.c...
#!/bin/sh
search()
{
for file in `ls $1`
do
if [ -d $file ]
then
search "$1/$file"
elif [ "$file" = "mac.c"]
then
echo "$1/$file"
fi
done
}
search .
程序可以运行但是,当遍历下一级目录的时候值遍历第一个目录就跳出循环了,我认为是这样的 希望大家帮忙看一下是哪里出问题了,非常感谢 展开
search()
{
for file in `ls $1`
do
if [ -d $file ]
then
search "$1/$file"
elif [ "$file" = "mac.c"]
then
echo "$1/$file"
fi
done
}
search .
程序可以运行但是,当遍历下一级目录的时候值遍历第一个目录就跳出循环了,我认为是这样的 希望大家帮忙看一下是哪里出问题了,非常感谢 展开
展开全部
elif [ "$file" = "mac.c"]
这句判断表达式里少了一个空格。
应为:
elif [ "$file" = "mac.c" ]
追问
不好意思 ,那个打错了,不是那个的问题,如果是的话,运行会出错的。谢谢
追答
看代码好像是有点问题,具体还要调试确认。
进入 [ -d $file ] 分支后又会调search函数本身,一旦再次调用,$1的值就变了,所以调用完成回来后下面elif 分支里的文件路径就不是预期的了。
所以建议在for循环前先用一个变量存储当前的$1值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询