【问题标题】:Recursive function in AIX bashAIX bash 中的递归函数
【发布时间】:2016-08-15 23:26:07
【问题描述】:

概述:

我想编写一个函数,该函数将继续执行直到值等于 0,如果值大于 0,我将值写入文件并中断循环。

问题:

如果函数执行 8 次,则在退出函数时,如果值大于 0,则将 8 次值写入文件而不是 1 次。请帮助我解决我面临的问题。

PFB 使用的代码,

#!/usr/bin/ksh

    fx_Running()
    {
        v_line=$1
        v_SRC_NM=$2

        v_VAR =`echo $v_line|awk -F',' '{print $1}'`

        v_STATUS=`wc -l $v_VAR | awk '{print $1}`

        if [ $v_STATUS == 0 ]
        then
            fx_Running $v_line $v_SRC_NM 
        fi

        if [ $v_STATUS == 1 -o $v_STATUS == 2 ]
            then
                ${v_line} >> ${v_COMPLETED_LIST}
                break
        fi

        if [ $v_JOB_STATUS == 3 ]
        then        
            ${v_line} >> ${v_FAILED_LIST}
            break
        fi

    }

【问题讨论】:

  • 如果你的脚本以#!/usr/bin/ksh开头,为什么你的标题会提到bash?

标签: shell unix recursion aix


【解决方案1】:

使用 break 不正确,请改用 return。具体来说,break 退出循环,而return 退出函数。

这是一个问题的演示:

foo(){ break ; } ; for f in `seq 10` ; do echo $f ; foo ; done

输出:

1

【讨论】:

    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多