variavel não expande [RESOLVIDO]

1. variavel não expande [RESOLVIDO]

Jeferson dos Santos
lordhulk

(usa Ubuntu)

Enviado em 01/03/2009 - 18:42h

ola gente
eu to com um arquivo chamado /etc/menu/portas
nele tem algo como esse conteudo
-----------------------
teste1 5900 $local1
-----------------------

em um script eu tenho a variavel:

---------------------
local1=192.168.0.1
---------------------

e eu queria q ele lesse aquela string e trocasse $local1 por 192.168.0.1. Ja tentei diversas formas, usando:

echo "$(grep local1 /etc/menu/portas)"
echo "$(cat /etc/menu/portas)

echo "$(echo "$(grep teste1 /etc/menu/portas)")"

mas de forma alguma ele expande $local1 para 192.168.0.1. Ja tentei com sed, grep, cat, ja depurei com bash -x e ele sempre me retorna $local1 ao inves de 192.168.0.1.

Alguem pode ajudar esse pobre programador shell a expandir isso?









  


2. Re: variavel não expande [RESOLVIDO]

nelio
neliobjr

(usa Red Hat)

Enviado em 01/03/2009 - 23:52h

Cara, desculpa mas sinceramente não entendi nada.

Não estou entendendo o que vc quer dizer com o script, mas o que eu acho que entendi é isso:

Como vc disse tem um arquivo chamado portas com o conteudo:

teste1 5900 $local1

e quer aplicar um sed para alterar este $local1, do arquivo portas, dentro do seu script em algum momento, se isto te ajudar, tenta assim o sed:

local1=192.168.0.255 # indica que local1 receba o ip_xpto e o sed abaixo efetuará a troca no arquivo portas.

sed 's/$local1/'$local1'/g' portas

# lembrando que este sed é uma troca temporaria, só para visão na tela, e o parametro -i faz a troca definitiva assim: sed -i 's/$local1/'$local1'/g' portas

# este exemplo que dei funionará no aquivo inteiro, opção g no final do sed, ex.

arquivo_portas:

teste1 5900 $local1
teste2 5901 $local1
teste3 5902 $local2

local1=192.168.0.255
sed 's/$local1/'$local1'/g' arquivo_portas # ficará

teste1 5900 192.168.0.255
teste2 5901 192.168.0.255
teste3 5902 $local2


Espero ter ajudado, mas se isso não te ajudar, tenta reformular ai a questão.

Obs, sei que a porta 5900 é a do VNC, escrevi um script para instalar o vnc server, no terminal 0 que é a tela que esta mostrando para o usuario, se tiver curiosidade.:

http://www.vivaolinux.com.br/script/Configuracao-do-VNC-Server-no-Display-0-(terminal-que-estiver-na...


ABS




3. Re: variavel não expande [RESOLVIDO]

Jeferson dos Santos
lordhulk

(usa Ubuntu)

Enviado em 02/03/2009 - 00:24h

Olá Nelio,
A ninjaria que estava tentando era a seguinte:
pegar o conteudo do arquivo /etc/menu/portas

-----------------------
teste1 5900 $local1
-----------------------

e quando eu lesse ele no script, queria que ele trocasse $local1 pelo conteudo da variavel, que eu declarei dentro do script. Por exemplo, se eu fizer

cat /etc/menu/portas | grep teste1

ele me retorna

teste1 5900 $local1

e eu queria q retornasse direto

teste1 5900 192.168.0.1


Acontece q o shell não deixa isso de jeito nenhum, para evitar que uma variavel seja definida acidentalmente... ai resolvi assim, tirei o $ do local1 dentro do arquivo /etc/menu/portas, ficando

-----------------------
teste1 5900 local1
-----------------------

e no script uso o sed para trocar esse local1.

echo $(sed -n /^teste/n | sed "s/local1/$local1/g" )

aí sim ele retorna

teste1 5900 192.168.0.1

A propósito, a ideia não é como esta escrito acima... eu so fiz assim pra tentar facilitar a interpretação de uma lógica q agora eu vejo que estava mau feita. O que estou fazendo é um sistema completo de gerenciamento do servidor, inclundo proxy, firewall, rede etc, já que não achei nenhuma especie de webmin pra ambiente texto.

Quero deixar meu obrigado por tentar ajudar.
Abraços,






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts