我是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
有人请帮忙。
提前致谢
答案 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
需要输入1
或name
,即在您的计划opt
中值Hello
。它匹配第一个if
,它将输出打印为Hello world
这一直持续到遇到EOF
。
在程序中,exit
中的Quit
会在按下2时导致退出。
预期产出:
1) Hello
2) Quit
#? 1 <= my input
Hello World
#? 2 <= my input
done