Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Kurumin 6.1
Por andre227
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

As maravilhas do Shell Script
Linux user
bryan
23/10/2006
Pode parecer um assunto batido, mas sempre há cada vez mais pessoas procurando sobre este tipo de informação na internet. Aqui vai uma introdução básica, que visa ensinar os iniciantes sobre as maravilhas de um terminal shell aberto. O Shell Script pode parecer simples, mas é uma ferramenta poderosa para resolver problemas rápidos e práticos.
Por: Bryan Garber da Silva
[ Hits: 75562 ]
Conceito: 9.0   2 voto(s)2 voto(s)2 voto(s)2 voto(s)2 voto(s) + quero dar nota ao artigo

Iniciando

Comecemos pelo famoso "Hello World".

$ vim hello_world.sh

OBS: .sh é a extensão usada para denotar quando um arquivo contém código de Shell Script. Isto ajuda editores (como o VIM que utilizo) a colorir corretamente palavras reservadas (if, for, ...).

No arquivo hello_world.sh, vamos adicionar a seguinte linha:

echo "Hello World!"

Fecharemos o arquivo e, no terminal, executaremos:

$ sh hello_world.sh

Isto chamará o interpretador do Shell e ele executará os comandos que estiverem dentro deste arquivo. O resultado deve ser assim:

Hello World!

Para não precisarmos chamar toda vez que quisermos executar nossos scripts o "sh", nós podemos fazer assim:

#!/bin/sh

echo "Hello World!"

Damos permissões de execução para o arquivo:

$ chmod +x hello_world.sh

Então podemos executar diretamente o arquivo no terminal:

$ ./hello_world.sh
Hello World!

Próxima página >>




Páginas do artigo

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por mlegidio em 23/10/2006 - 05:12h:

Gostei muito deste artigo, pelo simples fato dele ter despertado em mim uma curiosidade em melhorar nessa parte. Obrigado pelos links enviados.

abracos
Mlegidio

[2] Comentário enviado por pedemesa em 23/10/2006 - 09:32h:

Show de bola! Muito bom mesmo! Vou ler mais sobre o XDialog...

[3] Comentário enviado por balani em 23/10/2006 - 13:54h:

Muito bom, bem explicado, vlw

[4] Comentário enviado por texugo89 em 23/10/2006 - 15:23h:

O artigo ficou muito bom, bem simples e objetivo...

Mas eu encontrei dois pequenos erros em WHILE:

original:
--------------------
Usando "while" ao invés de "for" fica assim:

i=1
while [ i -le 100 ]; do
echo "$i"
done
--------------------

como deve ficar:
--------------------
Usando "while" ao invés de "for" fica assim:

i=1
while [ $i -le 100 ]; do
echo "$i"
i=$((i+1))
done
--------------------

1. Alteração, como o i é uma variável ele tem que ser declarado juntamento com o $ ficando assim: $i

2. Alteração, no while você deve almentar o valor da variável $i, caso contrário você ficara em um looping eterno e o echo sempre imprimira 1. Para corrigir isso acrescente a seguinte linha após o echo: i=$((i+1))

Abraços,

## T3%U60 ##

[5] Comentário enviado por _luks em 23/10/2006 - 21:15h:

parabens,
esse foi um dos melhores tutoriais de sh que ja li na minha vida :D

[6] Comentário enviado por removido em 24/10/2006 - 19:10h:

nada de C nem coisas complicadas, use Shell! Adorei, sendo um entusiasta do Shell Linux! Parabéns!!

[7] Comentário enviado por bryan em 25/10/2006 - 16:11h:

Muito obrigado pelos elogios. =)
Me esforcei bastante para que ficasse o mais simples e direto o possível.
Obrigado ao texugo pela correção no exemplo do while, acabei me passando nessa... =)

[8] Comentário enviado por douglasdiasn em 08/11/2006 - 10:25h:

Muito Simples e Direto

Parabens...

[9] Comentário enviado por xunil em 15/06/2007 - 17:10h:

Muito bom!
Gostava de saber se voce sabe como fazer o exemplo do while mas com 0,1 em vez de 1 a incrementar.
Qualquer poderia solucionar minha duvida
http://www.vivaolinux.com.br/perguntas/verPergunta.php?codigo=62760

Obrigado e continue, adorei o artigo!!


[10] Comentário enviado por GilsonDeElt em 22/03/2008 - 21:04h:

d+, cara!

os usuários de Shell Script (e até os não-usuários deles, mas que dependem de quem usa) te agradecem

foi o mais simples artigo sobre Shell que eu já li até então!

Congratulations!

[11] Comentário enviado por minduim em 07/04/2009 - 20:40h:

como eu converto string para numeros?
Obrigado pela atenção.

#!/bin/bash
tamanho_max=7,4M
t=$(/usr/bin/du -h -s /home/)
total=$(echo $t |cut -f1 -d"/")
echo "$t"
echo "$total"
echo $total+1
if [ ${total} -ge ${tamanho_max} ]
then
echo "maior igual"
else
echo "menor igual"
fi


[12] Comentário enviado por bryan em 08/04/2009 - 10:09h:

Tu tens quatro problemas aqui.
Primeiro: se tu quiser usar a variável "tamanho_max" para comparação, tu terá que retirar o M do final, ficando:

tamanho_max="7,4"

Segundo: para garantir igualdade de grandezas na comparação (ou seja, garantir que tu irá comparar megabyte com megabyte), tu terá que alterar o teu comando du para isto:

t=$(/usr/bin/du -shm /home/)

Isto fará com que, no momento do cut para calcular o valor da variável "total", o resultado não tenha um "M " no final. Isto estava acontecendo no teu script original. Caso tu ateste que continua, é só adicionar mais um cut na linha:

total=$(echo $t |cut -f1 -d"/" | cut -f1 -d"M")

Terceiro: sobre teu echo... O shell script não sabe lidar com pontos flutuantes... o que tu deve fazer, para imprimir o valor correto, é usar o bc!

echo $total+1 | bc

Quarto: sobre o if... O -ge do comando test somente sabe compara inteiros. Tu terá que usar da seguinte forma:

if [ ${total} > ${tamanho_max} ] || [ ${total} = ${tamanho_max} ]
then
echo "maior igual"
else
echo "menor"
fi

Sim, tu terá que fazer dessa forma. Infelizmente, o comando test não reconhece ">=", daí tu tem que separar.

É isso. Agora tem que funcionar.
Abraços.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.