我正在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
每次选择一个选项时,都会调用一个函数,循环被破坏,脚本继续进行后续操作,例如:选择另一个菜单来运行。
如果你想要更多整个剧本,请告诉我
感谢
答案 0 :(得分:0)
问题解决了!它确实显示我可以获取文件的次数有限 - 我认为是文件操作员限制。我通过在开始时获取每个文件一次,将每个文件的内容放入一个函数,然后调用函数名而不是重复获取文件来解决这个问题。