Bash编程无限循环

时间:2014-10-06 08:13:30

标签: linux bash

我是bash的新手,我正试图从在线导师那里学习它。 当我使用xserver在我的计算机(windows)上尝试以下代码时,我正在

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

并且这无限地继续下去,这是我不应该得到的。我用了./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    
有人请帮忙。

提前致谢

1 个答案:

答案 0 :(得分:1)

man命令的select页面清楚地说明了您错误的位置

select name [ in word ] ; do list ; done

扩展后面的单词列表,生成一个列表               项目。扩展单词集打印在标准上               错误,每个都以数字开头。如果省略in字,               打印位置参数(参见下面的参数)。               然后显示PS3提示并从标准中读取一行               dard输入。如果该行包含一个对应的数字               其中一个显示的单词,然后将name的值设置为               那个词。如果该行为空,则单词和提示符为               又玩了。如果读取EOF,则命令完成。任何其他               value read导致name被设置为null。

select opt in $OPTIONS; do

此处OPTIONS代表语法中的word。现在当展开OPTIONS时,列表{Hello, Quit}被显示为输出,由数字表示,如输出的前一部分所示。

1) Hello
2) Quit

然后显示系统中的PS3变量#?并等待用户输入。当您按select 1(语法中)时,2需要输入1name,即在您的计划opt中值Hello。它匹配第一个if,它将输出打印为Hello world这一直持续到遇到EOF

在程序中,exit中的Quit会在按下2时导致退出。

预期产出:

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