Author: BinnyVA
Linguagem Shell Script – Use Perl, Não Bash
Para mim, um script de shell é um script que automatiza tarefas repetitivas. Mas essa não é a definição "oficial". Wikipedia tem essa definição…
Um script de shell é um script escrito para o shell, ou interpretador de linha de comando, de um sistema operacional.
Eu uso uma definição que define o propósito do script - enquanto os outros preferem uma definição que define a tecnologia utilizada. Não vou afirmar que minha definição seja melhor do que a outra definição - isso é inútil. Além disso, mesmo acho que a "outra" definição é a certa. Mas vou tentar mostrar-lhe as vantagens da minha abordagem.
O objetivo
Eu gosto de automatizar coisas (em outras palavras, sou preguiçoso). Então eu tenho uma pequena coleção agradável de scripts de shell personalizados. Mas há uma enorme barreira para escrever scripts de shell - o idioma usado. Tradicionalmente, os scripts de shell são escritos em um idioma fornecido pelo shell – como bash ou tcsh. Esse é o problema - essas línguas são ruins - com um capital ‘B’.
O problema
Para pessoas que estão acostumadas a línguas decentes, estas as linguagens shell parecerão fracas – ou mesmo o mal. Mas, como a maioria dos scripts shell são pequenos, a maioria das pessoas não se importa com a tortura.
Em bash, os comandos de fluxo de controle parecem ser lançados como um pensamento posterior ao invés de algo incorporado ao idioma. Se você não acredita em mim, compare o loop 'if' de bash e Perl.
Bash
Este código verifica se a variável '$ value' tem o valor 0 - se assim for, ele imprime a mensagem 'No Value'
if [ $value -eq 0 ] ; then
echo "No Value"
fi
Perl
O mesmo código em Perl…
if($value == 0) {
print "No Value";
}
Claro, os perl peritos irão para if(!$value)
ou mesmo unless($value)
– Mas esse não é o ponto. Veja como melhor o o código parece em Perl. Sim, até estou surpreso ao ouvir essas palavras - Perl é considerado por muitos como uma linguagem "feia". Mas, quando comparado às linguagens de casca, Perl é uma jóia (desculpe o trocadilho - não pude resistir).
A solução
A solução é simples – não use um idioma de shell para escrever seus scripts de shell - use uma linguagem de script de alto nível como Perl. Ou Python, Ruby, PHP, Tcl ou até JavaScript.
Eu ainda uso bash para escrever scripts shell – mas se o script shell tiver uma condição if (diferente de uma verificação de argumento simples), uso um idioma mais alto - geralmente Perl.
Vantagens de usar uma linguagem Shell
- É suportado em até mesmo as mais pequenas distribuições de linux - mesmo em sistemas embarcados.
- É o método preferido pela maioria - espero que isso mude em breve.
- As chamadas de comando parecem mais naturais em uma linguagem de shell.
Vantagens de usar uma linguagem de alto nível
- Código melhor
- De fácil manutenção
- Desenvolvimento mais rápido
- As bibliotecas oferecem muita funcionalidade
- Mais fácil de acessar para diferentes plataformas.
Então, por que estou lhe falando tudo isso? Dois motivos...
Um, a próxima vez que você escrevesse um script de shell, eu quero que você escolha um idioma de alto nível em vez de usar bash.
O segundo motivo é que agora isso Minha série em leitores de MP3 Linux acabou, vou tirar uma pequena pausa das postagens da área de trabalho e escrever sobre mais tópicos do 'linuxy'. E um desses tópicos é o Shell Scripting. Então, no futuro, eu vou compartilhar alguns dos meus scripts de shell com você. Então, quando publiquei um script Perl e chamo um script de shell, não quero que você fique confuso .