No bash, como posso ecoar o nome da variável, não o valor da variável? [fechadas]

13

Suponha que eu tenha uma variável var no bash. Eu posso atribuir um valor para isso. Por exemplo, vou fazer uma string:

var="Test"

Eu quero echo o nome de var , não o valor mantido por var . (Eu posso fazer o último com echo $var , mas eu realmente quero fazer o primeiro.)

A resposta a esta pergunta do SO diz para usar echo ${!var} , mas quando eu faço isso eu ecoo apenas retorna uma linha em branco. Por exemplo, este script bash

#!/bin/bash

echo "Hi"
var="Test"
echo ${!var}
echo "Bye"

retorna esta saída:

Hi

Bye

com apenas uma linha em branco entre Hi e Bye , em vez de var . O que estou fazendo de errado?

Estou executando o bash 4.1.5 (1) no Ubuntu 10.04.4 .

    
por Andrew 12.05.2014 / 20:10

2 respostas

16

A expansão dos parâmetros do shell $ {! name @} ou $ {! name *} pode ajudar,

$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar

Embora seja viável, não consigo imaginar a utilidade disso ...

    
por 12.05.2014 / 22:47
25

Se você deseja simplesmente gerar um nome de variável estática, pode escapar o $ -sign:

echo \$var
    
por 12.05.2014 / 23:04

Tags