Como usar o nome de uma variável para se referir a outra variável? [duplicado]

1
a=2
pt2=3
echo $a
2
echo $pt2
3

Como posso usar

echo $pt($a)

para imprimir o conteúdo de pt2 ?

Uma alternativa é

b=pt$a
echo $b
pt2
echo $[$b]
3
    
por Mahesh 08.06.2014 / 06:50

1 resposta

0

a=2
pt2=3
eval "echo \"\${pt$a}\""

3

Alternativamente:

b=pt$a
eval "echo \"\${$b}\""

3

Existem outros métodos:

a=2
pt2=3
export "pt$a=$((pt$a + $(echo pt$a)))"
echo $((pt$a))

6

export pode funcionar como eval desse modo depois de uma moda com menos riscos - mas há o que não pode ser mais tarde se você precisar. E $(( aritmética = atribuição )) afeta o comando atual no shell atual e, portanto, pode ser ainda mais seguro para atribuição de variável imediata se o valor for numérico.

Há também os .dot e <<HEREDOCS do shell para avaliar duas vezes uma atribuição de variável:

var1=var2 ; . <<HEREDOC /dev/stdin
    $var1=val
HEREDOC

echo $var2

val
    
por 08.06.2014 / 07:37

Tags