Bash编程无限循环

问题描述:

我是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

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