Variável dinâmica no script do KornShell

2

Este script do KornShell (ksh):

envir=Dev
eval "${envir}foo=bar"
echo "$Devfoo"

Saída:

bar

Mas não sei qual valor é atribuído à variável envir . Então eu quero fazer algo assim, onde a saída é a mesma que acima:

envir=Dev
eval "${envir}foo=bar"
echo "${${envir}foo}"

Saída:

${${envir}foo}: bad substitution
    
por javaPlease42 28.07.2015 / 18:13

1 resposta

3

Para ksh93, você tem (pelo menos) algumas escolhas

  1. matrizes associativas

    envir=Dev
    foo["$envir"]=bar
    echo "${foo["$envir"]}"
    
  2. namerefs

    nameref var=${envir}foo
    var=bar
    echo "$var"
    

Para ksh88, você pode estar preso com eval:

envir=Dev
name="${envir}foo"
eval "$name=bar"
eval "echo \$$name"
    
por 28.07.2015 / 19:02