這是我迄今爲止所做的。我真的不知道如何從另一個函數調用Menu2。每當我嘗試運行它時,我總會遇到錯誤。另外由於第一個菜單的某些原因,我需要在實際退出之前輸入「X」兩次。還有一件事,在計算完成後,由於某種原因返回菜單2,當我需要它返回菜單時。嘗試創建一個帶有2個菜單的shell腳本來執行添加和刪除操作
在此先感謝您的幫助!
編輯如果我用「Menu2」替換cpick()中的「break」,它永遠不會執行Menu2。它循環回菜單。對不起,我得到的錯誤是因爲我不確定如何調用函數中的函數。我正在嘗試「菜單2()」,而不是菜單。
EDIT 2問題#1: 「*」 只是隱藏我的名字:) 問題#2:工作謝謝! 問題3:我真的不明白你在暗示什麼...... S 問題4:我現在擁有的方式似乎像我想要的那樣工作,所以我要改變它,它的只是美學:P
我仍然不知道如何返回到菜單計算完成後。我無法調用我的apick()中的菜單功能。我希望它做的是在計算完成後返回菜單,而不是返回到Menu2。
#!/bin/sh
LOGO=" Shell Scripting - Created by *****"
cmenu="C) Calculation";
xmenu="X) Exit";
amenu="+) Add";
smenu="-) Substract";
badchoice() { MSG="Invalid Selection ... Please Try Again" ;}
cpick() { clear
read -p "Please enter an integer number or X to exit: " num1
clear
break
echo; }
apick() { clear
read -p "Please enter an integer number or X to exit: " num2
sum=$(($num1+$num2))
echo The sum of $num1 plus $num2 equals $sum
sleep 3;}
spick() { clear
read -p "Please enter an integer number or X to exit: " num2
diff=$(($num1-$num2))
echo The difference of $num1 minus $num2 equals $diff
sleep 3;}
xpick() { break;}
Menu() {
clear
echo `date`
echo
echo "\t" $LOGO
echo
echo "Please Select:"
echo
echo "\t" $cmenu
echo "\t" $xmenu
echo $MSG
echo Please choose a letter above then hit Enter;
}
Menu2() {
clear
echo `date`
echo
echo "Please Select:"
echo
echo "\t" $amenu
echo "\t" $smenu
echo "\t" $xmenu
echo $MSG
echo Please choose an option above then hit Enter;
}
while true
do
Menu
read answer
MSG=
case $answer in
c|C) cpick;;
x|X) break;;
*) badchoice;;
esac
done
while true
do
Menu2
read answer
MSG=
case $answer in
+) apick;;
-) spick;;
x|X) xpick;;
*) badchoice;;
esac
done
您需要輸入兩次x,因爲從第一第一齣口,而從第二while循環迴路,第二個退出。功能中斷不會退出。你能指定你得到什麼錯誤信息嗎? – TrueY