====== User selections ======
===== Synopsis =====
select ; do
done
select in ; do
done
# alternative, historical and undocumented syntax
select
{
}
select in
{
}
===== Description =====
This compound command provides a kind of menu. The user is prompted with a //numbered list// of the given words, and is asked to input the index number of the word. If a word was selected, the variable '''' is set to this word, and the [[syntax:basicgrammar#lists | list]] '''' is executed.
If no ''in '' is given, then the positional parameters are taken as words (as if ''in "$@"'' was written).
Regardless of the functionality, the //number// the user entered is saved in the variable ''REPLY''.
Bash knows an alternative syntax for the ''select'' command, enclosing the loop body in ''{...}'' instead of ''do ... done'':
select x in 1 2 3
{
echo $x
}
This syntax is **not documented** and should not be used. I found the parser definitions for it in 1.x code, and in modern 4.x code. My guess is that it's there for compatiblity reasons. This syntax is not specified by POSIX(R).
===== Examples =====
# select in ; do
#
# done
# meaning e.g.:
clear
echo
echo hit number key 1 2 or 3 then ENTER-key
echo ENTER alone is an empty choice and will loop endlessly until Ctrl-C or Ctrl-D
echo
select OPTIONX in beer whiskey wine liquor ; do
echo you ordered a $OPTIONX
break # break avoids endless loop -- second line to be executed always
done
# place some if else fi business here
# and explain how it makes sense that $OPTIONX is red but OPTIONX is black
# even though both are variables
===== Portability considerations =====
===== See also =====