之前有人建议我这样做是因为我没有从循环中构建菜单系统,但现在我已经使用“选择”完成了这项工作。这是我的菜单:
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
每次选择一个选项时,都会调用一个函数,循环会中断,脚本会继续执行后续操作,例如选择另一个菜单来运行。
如果你想了解更多整个剧本,请告诉我