2014-10-06 82 views
2

我是bash的新手,我正在嘗試從在線輔導者那裏學習。 當我與一個Xserver的我越來越Bash編程無限循環

1) Hello 
2) Quit 
#? 
bad option 
#? 

,這繼續無限,這我不應該讓試圖在我的電腦(Windows)在下面的代碼。我用./programname.txt 運行該文件 和我的代碼是

#!/bin/bash 
OPTIONS="Hello Quit" 
select opt in $OPTIONS; do 
    if [ "$opt" = "Quit" ]; then 
     echo done 
     exit 
    elif [ "$opt" = "Hello" ]; then 
     echo Hello World 
    else 
     clear 
     echo bad option 
    fi 
done  

有人請幫助。

在此先感謝

+0

你應該(UN)格式化你的問題 – keyser 2014-10-06 08:14:00

+0

這對我的作品。 – choroba 2014-10-06 08:22:20

+0

當你得到這個不好的選擇時,你準確輸入什麼? – RaFD 2014-10-06 08:25:19

回答

1

manselect命令的明確規定,你在錯誤的

select name [ in word ] ; do list ; done

以下單詞的列表展開,產生的 項的列表。擴展詞的集合打印在標準的 錯誤上,每個錯誤前面都有一個數字。如果省略了輸入字,則會打印位置參數(參見下面的參數) 。 然後顯示PS3提示,並從stan- dard輸入中讀取一行。如果該行包含一個對應於 顯示的單詞之一的數字,則該單詞的名稱值設置爲 。如果該行爲空,則會再次播放單詞和提示。如果讀取EOF,則命令完成。讀取任何其他 值都會將名稱設置爲空。

select opt in $OPTIONS; do

這裏OPTIONS代表word中的語法。現在,當OPTIONS展開時,列表{Hello, Quit}已打印爲輸出,並以數字結尾,如輸出的前面部分所示。

1) Hello 
2) Quit 

然後PS3變量,在您的系統是#?顯示並等待用戶輸入。 select預計輸入12當您按1name(在語法),即在您的程序opt將取值Hello。它與第一個輸出if匹配,它將輸出打印爲Hello world,直到遇到EOF

在程序中,中的exit在按下2時會導致退出。

預期輸出:

1) Hello 
2) Quit 
#? 1 <= my input 
Hello World 
#? 2 <= my input 
done 
+2

這並不能解釋什麼是錯誤的,很難遵循 – 2014-10-06 09:26:32

+0

@ nu11pO1n73R非常感謝我瞭解該程序。感謝您的幫助 – Sree 2014-10-06 11:26:16

+0

@PeterR程序中沒有任何錯誤。問題出在提供的輸入,當程序是朗姆酒 – nu11p01n73R 2014-10-06 11:27:33