[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-----