AIX 中的递归函数 bash
Recursive function in AIX bash
概览:
我想编写一个函数,该函数将继续执行直到值等于 0,如果值大于 0,我将值写入文件并中断循环。
问题:
如果该函数执行了 8 次,那么在退出函数时,如果值大于 0,则将 8 次该值写入文件,而不是 1 次。请帮助我解决我面临的问题。
PFB 使用的代码,
#!/usr/bin/ksh
fx_Running()
{
v_line=
v_SRC_NM=
v_VAR =`echo $v_line|awk -F',' '{print }'`
v_STATUS=`wc -l $v_VAR | awk '{print }`
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
}
使用break
不正确,请改用return
。具体来说 break
退出一个 循环 ,而 return
退出一个 函数.
这是问题的演示:
foo(){ break ; } ; for f in `seq 10` ; do echo $f ; foo ; done
输出:
1
概览:
我想编写一个函数,该函数将继续执行直到值等于 0,如果值大于 0,我将值写入文件并中断循环。
问题:
如果该函数执行了 8 次,那么在退出函数时,如果值大于 0,则将 8 次该值写入文件,而不是 1 次。请帮助我解决我面临的问题。
PFB 使用的代码,
#!/usr/bin/ksh
fx_Running()
{
v_line=
v_SRC_NM=
v_VAR =`echo $v_line|awk -F',' '{print }'`
v_STATUS=`wc -l $v_VAR | awk '{print }`
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
}
使用break
不正确,请改用return
。具体来说 break
退出一个 循环 ,而 return
退出一个 函数.
这是问题的演示:
foo(){ break ; } ; for f in `seq 10` ; do echo $f ; foo ; done
输出:
1