2015-02-08 92 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

腳本:你想要什麼

$ ./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 
$ 

它是:使用的

#!/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 

實例?


不要忘記,test是猛砸保留字(這就是爲什麼我引用它):

$ 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 2015-02-08 19:34:17

+0

是的,謝謝! – krodami 2015-02-09 19:28:11

+0

使用聲明有什麼必要?用於'-r'的 – krodami 2015-02-09 21:34:44

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