사용자가 선택할 수 있는 다양한 옵션이 포함된 메뉴를 만들고 있는데 행이 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
수행되는 작업을 알아보세요. 그 다음은 간단한 비교와 화면 좌표 연산 논리입니다. 쉘 스크립팅을 마스터하신 것 같습니다. 그러니 작성하는 것이 너무 어렵지는 않을 것입니다.