Pular para o conteúdo

Executar comando armazenado em uma variável [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Executar comando armazenado em uma variável [RESOLVIDO]

Enviado em 15/08/2017 - 18:43h

como faço para executar um comando armazenado em uma variável em formato de texto e que este comando pegue os valores de outras variáveis em tempo de execução?

explicando melhor meu problema com um exemplo ilustrativo...

no código abaixo tenho um comando armazenado em uma variável no formato de texto: cmd="echo $pwd"

e consigo executar o texto da variável como um comando: eval $cmd

o problema é que quando executo o comando ao invés de o comando pegar em tempo de execução o valor da variável "pwd", no entanto, ele pega o valor dessa variável no momento em que atribuí o comando para ser armazenado na variável no formato de texto.

assim, ao invés de o resultado "Final" ser "456" o resultado está sendo "123".

pwd="123"

cmd="echo $pwd"

pwd="456"

k=$(eval $cmd)

echo "Final: $k"

ou seja, como fazer com que o comando "eval $cmd" pegue o valor atual da variável "pwd"? (que é "456")

Responder tópico

2. Re: Executar comando armazenado em uma variável

Enviado em 15/08/2017 - 19:47h

raserafim escreveu:

como faço para executar um comando armazenado em uma variável em formato de texto e que este comando pegue os valores de outras variáveis em tempo de execução?

explicando melhor meu problema com um exemplo ilustrativo...

no código abaixo tenho um comando armazenado em uma variável no formato de texto: cmd="echo $pwd"

e consigo executar o texto da variável como um comando: eval $cmd

o problema é que quando executo o comando ao invés de o comando pegar em tempo de execução o valor da variável "pwd", no entanto, ele pega o valor dessa variável no momento em que atribuí o comando para ser armazenado na variável no formato de texto.

assim, ao invés de o resultado "Final" ser "456" o resultado está sendo "123".

pwd="123"

cmd="echo $pwd"

pwd="456"

k=$(eval $cmd)

echo "Final: $k"

ou seja, como fazer com que o comando "eval $cmd" pegue o valor atual da variável "pwd"? (que é "456")
Para "pegar" o valor atual de $pwd, altere a ordem da declaração das variáveis:
pwd="123"
pwd="456"
cmd="echo $pwd"
$cmd

att.:
marcelo oliver

3. Re: Executar comando armazenado em uma variável [RESOLVIDO]

Enviado em 16/08/2017 - 13:05h

msoliver escreveu:

Para "pegar" o valor atual de $pwd, altere a ordem da declaração das variáveis:
pwd="123"
pwd="456"
cmd="echo $pwd"
$cmd

att.:
marcelo oliver
msoliver, fiz apenas um "exemplo ilustrativo".

o meu script é bem mais amplo, o que dificultaria de enxergar o problema caso eu o colocasse completo...

no meu código a primeira atribuição de "pwd" está dentro de uma condição "if"... e a segunda atribuição está dentro de um laço "for"...


4. Re: Executar comando armazenado em uma variável [RESOLVIDO]

Enviado em 16/08/2017 - 13:08h

raserafim escreveu:

pwd="123"

cmd="echo $pwd"

pwd="456"

k=$(eval $cmd)

echo "Final: $k"

já encontrei uma solução!

ao invés de {cmd="echo $pwd"} coloco {cmd='echo "$pwd"'}!!

pwd="123"

cmd='echo "$pwd"'

pwd="456"

k=$(eval $cmd)

echo "Final: $k"


Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder