私は新しいシェルスクリプトを作成しましたが、いくつかの問題が発生しました。以下は私のスクリプトです: -
function mainMenu(){
while :
do
echo -e "\nMain Menu:"
echo " A. Process Managements Utilities"
echo " B. Memory Managements Utilities"
echo " C. Exit"
read -p "Select :" menuSelect
echo
case $menuSelect in
a|A) processMgmt;;
b|B) memoryMgmt;;
c|C) exit 0;;
*)echo "Invalid Input"
echo
;;
esac
done
}
ユーザーが「INVALID INPUT」と入力すると、関数はすべてのmainMenu()
出力を印刷します。
Main Menu:
A. Process Managements Utilities
B. Memory Managements Utilities
C. Exit
Select :e
Invalid Input
Main Menu:
A. Process Managements Utilities
B. Memory Managements Utilities
C. Exit
Select :
select:
ユーザー入力が無効な場合にのみ印刷するには?
Select:e
Invalid input
Select:s
Invalid input
答え1
初めてオプションA、Bなどに関する情報のみを印刷しようとしているので、while
印刷後の繰り返し開始それ:
function mainMenu(){
echo -e "\nMain Menu:"
echo " A. Process Managements Utilities"
echo " B. Memory Managements Utilities"
echo " C. Exit"
while :
do
read -p "Select :" menuSelect
echo
case $menuSelect in
a|A) processMgmt;;
b|B) memoryMgmt;;
c|C) exit 0;;
*)echo "Invalid Input"
echo
;;
esac
done
}
出力例(例:予想される質問から):
Main Menu:
A. Process Managements Utilities
B. Memory Managements Utilities
C. Exit
Select :q
Invalid Input
Select :q
Invalid Input
これにより、関数が呼び出されたときに選択項目に関する情報が一度印刷され、次に入力を繰り返して目的のmainMenu
操作while
を実行します。read
case
入力が間違っている場合、while
そしてループでもう一度尋ねてくださいread -p "Select"
。