LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 776|回复: 3

递归调用的问题

[复制链接]
发表于 2006-3-16 14:36:24 | 显示全部楼层 |阅读模式
LFS='/home/darkise/sdcard'
function copyexist
{
local path
path=$1
#echo "Working dir: "$path
#echo "Destination dir: "$LFS
cd $path
for file in *; do
        if test -d $file ; then
                if test -d $LFS$1/$file ; then
                        echo "Do with sub directory ""$path/$file"
                        copyexist "$path/$file"##这地方出错##
                fi
        else
                if test -f $LFS$path/$file ; then
                        #echo "copying ["$file "] ..."
                        cp -f "$path/$file" "$LFS$path/$file" > /dev/null
                fi
        fi
done
cd $path
echo "Done ["$1"]"
}

copyexist $1

如上:
指定的目录下没有目录,只有一个目录而且第一不是目录的时候,可疑正常工作,
当有多个目录的时候,它只处理了第一个目录,后面的文件和目录就被无视了。

这是为什么?我应该这么作?
我是shell的新手,请大家帮帮忙了,在此先谢过了。
发表于 2006-3-17 13:14:56 | 显示全部楼层
The problem is the path. you have many relative paths and they are pretty much messed up during the loop. try run it via
  1. sh -xv script
复制代码
and you will see de debug info.
回复 支持 反对

使用道具 举报

发表于 2006-3-19 12:22:14 | 显示全部楼层
LFS='/home/darkise/sdcard'
function copyexist
{
local path
path=$1
#echo "Working dir: "$path
#echo "Destination dir: "$LFS
cd $path
for file in *; do
if test -d $file ; then
if test -d $LFS$1/$file ; then
echo "Do with sub directory ""$path/$file"
#copyexist "$path/$file"##这地方出错##

(copyexist "$path/$file")


fi
else
if test -f $LFS$path/$file ; then
#echo "copying ["$file "] ..."
cp -f "$path/$file" "$LFS$path/$file" > /dev/null
fi
fi
done
cd $path
echo "Done ["$1"]"
}

copyexist $1
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-20 09:38:55 | 显示全部楼层
Thanks!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表