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

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

Re: [shell-script] Script para Gerar Script


From: MrBiTS
Subject: Re: [shell-script] Script para Gerar Script
Date: Sat, 13 Oct 2007 08:57:37 -0300
User-agent: Thunderbird 2.0.0.6 (X11/20071008)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Prezados da Lista,
> 
> Não sei até onde isso é útil, mas acompanho vários scripts na
> lista para criação de outros scripts ou arquivos, onde enconto vários
> ECHO's e direcionamentos >>, resolvi passar um pouco da minha
> experiência com esses scripts.
> 
> Após alguns anos criando scripts com diversas finalidades, espero
> que minha experiência seja útil para algum fim.
> 
> Quando preciso gerar scripts ou arquivos originados de outro
> script utilizo funções e uma única saída e um único ECHO. Segue exemplo:
> 
> -----> script.sh <-----
> #!/bin/bash
> 
> function geraScript() {
> echo "#!/bin/bash
> # script gerado pelo script.sh
> # mostra a memória disponível
> grep ^MemTotal /proc/meminfo
> # mostra a distribuição atual
> head -n1 /etc/issue
> "
> }
> geraScript > info.sh
> chmod +x info.sh
> -----> end script.sh <-----
> 
> Como observam, para gerar um script qualquer, utilizo um único
> ECHO e um único direcionamento (>), ajudando em muito a manutenção do
> mesmo. Espero ter ajudado.
> 
> Abraços a todos e sucesso,

É esse o tipo de mensagem que mostra claramente que essa é , se não a
primeira, uma entre as 5 listas mundiais de altíssimo nível.

Complementando o script do Braga, acredito ser necessário exemplificar
como utilizar variáveis dentro dessa estrutura. Nosso problema aí é
colocar uma variável sem que ela seja interpretada pelo script gerador.
Se escrevermos a função geraScript assim:

function geraScript {
echo "#!/bin/bash
grep ^MemTotal /proc/meminfo
head -n1 /etc/issue
VAR1=$(free)
echo $VAR1
"
}

teremos a execução do comando free no momento da chamada da função, e
não é esse nosso objetivo. Então, utilizamos escapes para gerar nossa
função, agora com suporte a variáveis:

function geraScript {
echo "#!/bin/bash
grep ^MemTotal /proc/meminfo
head -n1 /etc/issue
VAR1=\$(free)
echo \$VAR1
"
}

Bastante simples.

Outra solução interessante é a utilização de nested scripts, tema
abordado inclusive em mensagens recentes da lista. Utilizando esse
recurso, nossa função ficaria assim:

function geraScript {
cat << __EOF__ >> info.sh
#!/bin/bash
# Gerado por nested scripts
grep ^MemTotal /proc/meminfo
head -n1 /etc/issue
VAR1=\$(free)
echo \$VAR1
__EOF__
}


Um abraço

MrBiTs - address@hidden



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHELKPrDdxWm3R8YYRAjLvAKCe9m0n/qlKce/fl/8gNBeyfyhjzwCgo0Xs
YyiQvhVd9g6MbTmBMvvbfuc=
=q1Se
-----END PGP SIGNATURE-----


reply via email to

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