shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] echo sem processar variável


From: Mateus Caruccio
Subject: Re: [shell-script] echo sem processar variável
Date: Mon, 25 Aug 2003 00:20:27 +0800

opa,

 isso eh barbadinah deresolver. eh so escapar os caracteres interpretados pelo 
shell. veja :

# esse eh o teu problema:
$ echo "$(hostname)"
rush.net

# que pode ser resolvido escapando o $
$ echo "\$(hostname)"
$(hostname)

Vi ? eh so nao deixar o shell "fazer o trabalho dele", ou seja, substituir o 
comando hostname antes de executar o echo.

No caso do seu script, tu utiliza um valor de uma variavel que eh "processada" 
dentro do echo... isso eh complicado de evitar. oque poderia sr feito é achar 
esse valores _antes_ do echo e substituir eles no echo

o script ficaria +ou- assim:

#!/bin/sh
aqui começa o script perguntando os dados...
no final:
...
echo "#!/bin/sh
### A variável abaixo não pode ser processada pelo echo, que to usando para  
escrever no arquivo backup.
DATA=\"\$(date +%d_%m_%Y\)\"

### Esta aqui tb tem que ser redirecionada sem ser processado pelo echo
SERVIDOR=\"\$(hostname)\"
ARQUIVO=\"\$SERVIDOR-$DATA.tar\"

DIRETORIOS=\"/etc/rc.conf /usr/local/squid/etc/squid.conf\"

# Dados do servidor FTP
HOST_FTP=\"200.200.200.200\"
USUARIO_FTP=\"usuario\"
SENHA_FTP=\"123456\" " > backup


Mais uma dica: ao inves de usar o echo, utilize uma feature do bash chamada 
Here Document.
A syntax eh a seguinte (nao necessariamente com o cat):

$ cat > arquivo_de_saida <<sinalizador_de_fim_de_arquivo

exemplo:

$ cat > backup <<EOF
DATA=\"\$(date +%d_%m_%Y\)\"
SERVIDOR=\"\$(hostname)\"
ARQUIVO=\"\$SERVIDOR-$DATA.tar\"
... e todos  conteudo do backup... como no outro script.
EOF

Uma linha com o sinalizador de fim de arquivo (nesse caso a string EOF) fecha o 
arquivo e grava tudo no arquivo backup.

[]s

   Mateus Caruccio


----- Original Message -----
From: address@hidden
Date: Sun, 24 Aug 2003 12:55:59 -0300
To: address@hidden
Subject: [shell-script] echo sem processar variável

> Dentro de um script, preciso redirecionar algumas linhas para outro script, 
> com 
> o echo. Até aí, beleza. Só que preciso escrever neste tal arquivo, uma 
> variável, porém o echo executa esta e escreve no arquivo redirecionado o 
> valor... por exemplo:
> 
> Um script para pegar o endereço IP, login e senha de usuário ftp. Após 
> preencher os dados, redirecionar o conteúdo abaixo para o arquivo com nome de 
> backup:
> 
> 
> #!/bin/sh
> aqui começa o script perguntando os dados...
> no final:
> 
> echo "#!/bin/sh
> ### A variável abaixo não pode ser processada pelo echo, que to usando para 
> escrever no arquivo backup.
> DATA=`date +%d_%m_%Y`
> 
> ### Esta aqui tb tem que ser redirecionada sem ser processado pelo echo
> SERVIDOR="$(hostname)"
> ARQUIVO="$SERVIDOR-$DATA.tar"
> 
> DIRETORIOS="
> /etc/rc.conf
> /usr/local/squid/etc/squid.conf"
> 
> # Dados do servidor FTP
> HOST_FTP="200.200.200.200"
> USUARIO_FTP="usuario"
> SENHA_FTP="123456"
> 
> " > backup
> 
> Não sei se deu pra entender, mas o echo ta escrevendo no arquivo backup:
> 
> #!/bin/sh
> DATA=24/08/2003
> 
> SERVIDOR=host.dominio.com.br
> 
> e teria que escrever as variaveis com o conteudo original...
> 
> Alguem soube com fazer isto???
> Gusmão
> 
> -------------------------------------------------
> This mail sent through IMP: http://horde.org/imp/
> 
> 
> 
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listasdiscussao.cjb.net
> ---------------------------------------------------------------------
>  
> 
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
> http://br.yahoo.com/info/utos.html 
> 
> 



# ########################################################
# Mateus de Oliveira Caruccio <caruccio at operamail.com>
# Linux User #183552 - UIN #37364320
# Vim, vi e matei o Emacs !



-- 
____________________________________________
http://www.operamail.com
Get OperaMail Premium today - USD 29.99/year


Powered by Outblaze


reply via email to

[Prev in Thread] Current Thread [Next in Thread]