交互式shell脚本 - 递归太深

时间:2017-08-17 10:19:41

标签: shell recursion ksh

我正在KSH中制作一个交互式shell脚本,但继续进行太深入的递归'错误。没有明显的模式发生,除了我使用脚本的时间越长,它就越有可能。

我之前被告知这是因为我没有从循环中构建我的菜单系统,但我现在使用' select'来完成此操作。这是我的菜单:

clear

echo "\nDatabase:${HBDB} ClaimId:${CLAIM}  TxId:${TRANS}  SubsidyId:${SUBS}"
echo "Select your option"
PS3="Option?"

select opt in \
"Input new subsidy row" \
"Change transaction and subsidy id" \
"Change subsidy id only" \
"Show subsidy row details" \
"Exit"

do
    case $opt in
            "Input new subsidy row")

            followUp=$SUPPATH/menuSelect.sh

            echo 'Dropping temp table...mcc_ac_tmp_hb9880_${CLAIM}_${TRANS}_${SUBS} ' >> $OUTFILE1

            sql $HBDB <<_END_ | sed -n '/DROP/,$p' >> $OUTFILE1

            set autocommit on;
            \p\g
            set lockmode session where readlock = nolock;
            \p\g

            DROP TABLE mcc_ac_tmp_hb9880_${CLAIM}_${TRANS}_${SUBS}; 

            \p\g

_END_
            . $paramSet
            break
            ;;

            "Change transaction and subsidy id")
            followUp=$SUPPATH/menuSelect.sh

            . $transChange

            break
            ;;


            "Change subsidy id only")

            followUp=$SUPPATH/menuSelect.sh

            . $subsChange
            break
            ;;


            "Show subsidy row details")
            echo "Retrieving details..."
            followUp=$SUPPATH/menu1.sh

            sql $HBDB <<_END_ | grep '|'  

            set autocommit on;
            \p\g
            set lockmode session where readlock = nolock;
            \p\g

            select claim_id,rent_trans_id,rent_subsidy_id,from_date,pay_amt
            from hbrentsubsidy
            where claim_id=${CLAIM}
            and rent_trans_id=${TRANS}
            \p\g
_END_
            read
            break
            ;;


            "Exit")
            exit 
            ;;


            *) 
            echo "ERROR: Invalid selection"
            ;;
            esac
        done


. $followUp

每次选择一个选项时,都会调用一个函数,循环被破坏,脚本继续进行后续操作,例如:选择另一个菜单来运行。

如果你想要更多整个剧本,请告诉我

感谢

1 个答案:

答案 0 :(得分:0)

问题解决了!它确实显示我可以获取文件的次数有限 - 我认为是文件操作员限制。我通过在开始时获取每个文件一次,将每个文件的内容放入一个函数,然后调用函数名而不是重复获取文件来解决这个问题。