我用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 .
程序可以运行但是,当遍历下一级目录的时候值遍历第一个目录就跳出循环了,我认为是这样的 希望大家帮忙看一下是哪里出问题了,非常感谢
展开
 我来答
百度网友5311d79
2014-09-08 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3225万
展开全部
elif [ "$file" = "mac.c"]

这句判断表达式里少了一个空格。

应为:

elif [ "$file" = "mac.c" ]
追问
不好意思 ,那个打错了,不是那个的问题,如果是的话,运行会出错的。谢谢
追答
看代码好像是有点问题,具体还要调试确认。
进入 [ -d $file ] 分支后又会调search函数本身,一旦再次调用,$1的值就变了,所以调用完成回来后下面elif 分支里的文件路径就不是预期的了。
所以建议在for循环前先用一个变量存储当前的$1值。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式