2015-02-08 2 views
0

Вот что у меня естьКак изменить переменную ввода пользователя?

echo "Please select an Environment " 

PS3="Please enter 1-6: " 
select env in dev qa test staging production quit 
do 
    case $env in 
     dev|qa|test|staging|production|quit) 
      break 
      ;; 
     *) 
      break 
      ;; 
    esac 
done 

echo $env 

То, что я хочу, когда кто-то выбирает и переменный окр Я хочу, чтобы перевести его.

Например производства будет перевести $ ENV = портал

ответ

1

Сценарий:

#!/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. 
    ... 
+0

Гораздо лучший пример. – Mikolaj

+0

да, спасибо! – krodami

+0

что нужно использовать declare? – krodami

0

Вы можете попробовать:

echo "Please select an Environment " 

echo -n "Please enter 1-6: " 
read ARG 
case $ARG in 
    1) ENV="dev" ;; 
    2) ENV="qa" ;; 
    #etc 
esac 

echo $env 
Смежные вопросы