如何更改用户输入变量



这是我的

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变量时,我想翻译它。

例如,生产将转换为$env=portal

脚本:

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

您可以尝试:

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

相关内容

  • 没有找到相关文章

最新更新