2013-03-13 105 views
2

我正在驅動Shell腳本在Linux中一個新的菜單,我簡化了我的表,只是打招呼和告別,使這個簡單的,下面是我的基本菜單佈局Shell腳本菜單

# Menu Shell Script 
# 
echo ---------------- 
echo  menu 
echo ---------------- 
echo [1] hello 
echo [2] bye 
echo [3] exit 
echo ---------------- 

基本上我有在菜單中,我一直在玩弄一些事情最近,但不能似乎得到什麼工作,我是新來這個,我覺得再下一行是

`read -p "Please Select A Number: " menu_choice` 

,但我不知道該怎麼做變量和什麼不是。 我想知道是否有人可以幫我用下一個代碼來簡單地讓我在按下按鈕時打個招呼,當按下按鈕2時再見,當用戶按下按鈕3時按下3退出。這將是非常感激的,因爲我幾天來一直在嘗試不同的方式,似乎無法使其發揮作用。

+0

您不應該將'read'命令放在反引號中。只要正常使用它,然後用'case'語句測試變量'$ menu_choice'。 – Barmar 2013-03-13 13:28:30

+0

你有沒有在你的代碼反引號,或者只是你添加了這個職位的代碼格式? – Mat 2013-03-13 13:29:49

+1

任何你沒有使用內置'select'命令來顯示菜單的原因? – Barmar 2013-03-13 13:32:35

回答

2

你不需要那些反引號爲echo...read

echo "----------------" 
echo " menu" 
echo "----------------" 
echo "[1] hello" 
echo "[2] bye" 
echo "[3] exit" 
echo "----------------" 

read -p "Please Select A Number: " mc 
if [[ "$mc" == "1" ]]; then 
    echo "hello" 
elif [[ "$mc" == "2" ]]; then 
    echo "bye" 
else 
    echo "exit" 
fi 

編輯

showMenu(){ 

echo "----------------" 
echo " menu" 
echo "----------------" 
echo "[1] hello" 
echo "[2] bye" 
echo "[3] exit" 
echo "----------------" 

read -p "Please Select A Number: " mc 
return $mc 
} 


while [[ "$m" != "3" ]] 
do 
    if [[ "$m" == "1" ]]; then 
     echo "hello" 

    elif [[ "$m" == "2" ]]; then 
     echo "bye" 
    fi 
    showMenu 
    m=$? 
done 

exit 0; 
+0

非常感謝您的工作!我是否認爲有一個代碼可以將它發送到循環中?所以當我按下一個,它說你好,它不只是結束? – user2157995 2013-03-13 14:00:03

+0

@ user2157995我沒有得到你,對不起,什麼循環?在循環中回顯「你好」? – Kent 2013-03-13 14:06:34

+0

我所有的代碼都在一個文件中,當我打開文件並按下1時,它說你好,然後離開文件並選擇另一個選項,我必須重新輸入./file_name才能重新開始。有沒有代碼,所以當我按1它說你好,然後帶我回菜單? – user2157995 2013-03-13 14:09:24

0

下面是一個簡單

if [ $menu_choice -eq 1 ] 
then 
    echo hello 
elif [ $menu_choice -eq 2 ] 
then 
    echo bye 
elif [ $menu_choice -eq 3 ] 
then 
    exit 0 
fi 

或使用情況

case $menu_choice in 
    1) echo hello 
     ;; 
    2) echo bye 
     ;; 
    3) exit 0 
     ;; 
esac 
+1

'eq'不是'test'中的比較運算符。 ITYM'-eq'或'='。 – Barmar 2013-03-13 13:31:11

+0

@Barmar thanx。已更正 – uba 2013-03-13 13:33:20