我正在制作一个包含各种选项的菜单供用户选择,但是一旦行达到 10,模式就会发生变化。由于数字 10 有两位数字,模式当然会改变。我希望能够在每行达到 9 行时立即开始一个新行,以保持每行一位数字的模式。示例 1 是我当前的输出。我们如何实现这个解决方案?
Example 1 Desired output
1) 1) 1)
2) 2) 2)
.) .) .
.) .) .
9) 9) 9)
10)
我的代码示例
echo -e "${MENU}*********************************************${NORMAL}"
echo -e "${MENU}**${NUMBER} 1)${MENU} Option 1) ${NORMAL}"
echo -e "${MENU}**${NUMBER} 2)${MENU} Option 2) ${NORMAL}"
echo -e "${MENU}**${NUMBER} 3)${MENU} Option 3) ${NORMAL}"
echo -e "${MENU}**${NUMBER} 4)${MENU} Option 4) ${NORMAL}"
echo -e "${MENU}**${NUMBER} 5)${MENU} Option 5) ${NORMAL}"
echo -e "${MENU}**${NUMBER} 6)${MENU} Option 6) ${NORMAL}"
echo -e "${MENU}**${NUMBER} 7)${MENU} Option 7) ${NORMAL}"
echo -e "${MENU}**${NUMBER} 8)${MENU} Option 8)${NORMAL}"
echo -e "${MENU}**${NUMBER} 9)${MENU} Option 9) ${NORMAL}"
echo -e "${MENU}**${NUMBER} 10)${MENU} Option10) ${NORMAL}"
echo -e "${MENU}**${NUMBER} 11)${MENU} Option11) ${NORMAL}"
echo -e "${MENU}*********************************************${NORMAL}"
echo -e "${ENTER_LINE}Please enter a menu option and enter or ${RED_TEXT}enter to exit. ${NORMAL}"
read sub3
while [ sub3 != '' ]
do
if [[ $sub3 = "" ]]; then
exit;
else
case $sub3 in
1) sub_menu4;
#othersub;
;;
2) clear;
sub_menu4;
#othersub;
;;
3) clear;
sub_menu4;;
4) clear;
sub_menu4;;
x)exit;
;;
\n)exit;
;;
*)clear;
option_picked "Pick an option from the menu";
sub_menu4;
;;
esac
fi
done
}
答案1
请运行此命令作为示例:
clear; tput cup 4 10; printf "Menu Item 1"; tput cup 7 30; printf "Menu Item 29";tput cup 23 0; printf "Make your selection"
然后查看命令man
页面tput
以了解其功能。之后就是简单的比较和屏幕坐标算术逻辑。看来您已经掌握了 shell 脚本编写。所以写起来应该不会太难