bashselect循环不起作用

我试图学习bash。 在一些教程中,我find了select循环。 但是它在我的MAC OS或者Linux上都不起作用。 我的代码是这样的:

#!/bin/bash names="Kyle Cartman Stan Quit" PS3="Select character: " select name in $names do echo "name="$name done 

我使用./test.sh来调用这个程序,结果如下所示:

 1) Kyle 2) Cartman 3) Stan 4) Quit Select character: Kyle name= Select character: Stan name= Select character: 

它似乎无法检测到我的input。 任何人都可以帮我吗?

代码是好的; 它的用法是错误的:允许的条目是34 ,而不是KyleCartmanStanQuit 。 (如果用户不得不输入全名,那么用户输入数字有什么意义?)

空字符串告诉你用户输入的东西无效。 观察,相比之下:

 1) Kyle 2) Cartman 3) Stan 4) Quit Select character: 1 name=Kyle Select character: 3 name=Stan 

顺便说一下 – 它应该是:

 # SAFE: quotes everything echo "name=$name" 

…要么…

 # SAFE: Quotes only the expansion echo name="$name" 

…不…

 # BUGGY: Runs expansion unquoted; can remove characters in IFS, expand globs, etc echo "name="$name 

看你应该什么时候报价? 在Wooledge维基上,或习惯通过http://shellcheck.net/运行你的代码,这会发现这种性质的问题。