0
点赞
收藏
分享

微信扫一扫

29. shell当中的函数递归详解,遍历目录示例

Gascognya 2022-02-01 阅读 81

文章目录


函数递归

函数递归:函数直接或间接调用自身,注意递归层数,可能会陷入死循环。
递归函数调用,就是把函数本身作为一个参数来调用。函数既是调用者又是被调用者,每调用一层就进入新的一层。

递归简而言之就是自己调用自己

#!/bin/bash
func ()
{
        read i      
        func "$i"      #调用自身
        echo "$i"      #输出$i
}
func      #调用函数

这段代码逻辑有问题,函数func里面调用自身的话,在他调用的这个func里面又有一个func的调用,func的调用里面又有一个调用,会进入无限循环。

为了使函数到达目的后就退出,必须要给循环定一个终止条件。条件满足时,不再递归调用,逐层返回,直至最外层调用。

递归示例

递归遍历目录

#! /bin/bash
function read_dir() {
    for file in $(ls $1); do
        if [ -d $1"/"$file ]; then
            read_dir $1"/"$file
        else
            echo $1"/"$file
        fi
    done
}

read_dir $1
[root@mdns zaishu]#./funs2.sh /root/zaishu
/root/zaishu/funs2.sh
/root/zaishu/funs.sh
/root/zaishu/hello.sh
举报

相关推荐

0 条评论