Сценарий:
#!/usr/bin/env bash
declare -ar OPTIONS=('dev' 'qa' 'test' 'quit')
PS3="Please enter 1-${#OPTIONS[@]}: "
select OPTION in "${OPTIONS[@]}"
do
case ${OPTION} in
'dev')
env='Development environment'
break
;;
'qa')
env='Quality Assurance environment'
break
;;
'test')
env='Test environment'
break
;;
'quit')
echo 'See ya' && exit 0
;;
*) echo 'invalid option';;
esac
done
echo "env = ${env}"
exit 0
Пример использования:
$ ./so_q28397293.sh
1) dev
2) qa
3) test
4) quit
Please enter 1-4: 1
env = Development environment
$ ./so_q28397293.sh
1) dev
2) qa
3) test
4) quit
Please enter 1-4: 5
invalid option
Please enter 1-4: 4
See ya
$
ли это то, что вы хотели?
Не забывайте, что test
это зарезервированное слово в Bash (именно поэтому я процитировал):
$ bash -c "help test"
test: test [expr]
Evaluate conditional expression.
Exits with a status of 0 (true) or 1 (false) depending on
the evaluation of EXPR. Expressions may be unary or binary. Unary
expressions are often used to examine the status of a file. There
are string operators and numeric comparison operators as well.
...
Гораздо лучший пример. – Mikolaj
да, спасибо! – krodami
что нужно использовать declare? – krodami