Pular para o conteúdo

Introdução ao Shell Script - Baseado no livro de Ken O. Burtch

Esse artigo foi elaborado tendo como base, o livro "Scripts de Shell Linux com Bash" de Ken O. Burtch. Abordando os tópicos essenciais para começar a criar scripts. Ensinando os conceitos básicos para criação de laço de repetição, estruturas condicionais, funções, operações aritméticas, scripts bem comportados, entre outras.
Calebe Bastos Oliveira calebebastos
Hits: 29.472 Categoria: Shell Script Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Parte 4: Comando if e test / Laço for

Comando if

O comando interno if, executa o comando e verifica os resultados. Se o comando teve sucesso, ele executa outro conjunto de comandos. O único comando normalmente usado com if test.

Estrutura básica:

if [ parâmetros ]; then
    declarações a executar
elif [ parâmetros ]; then
    declarações a executar
else
    declarações a executar
fi

Obs.: o comando test, foi substituído pelo colchete.

Comparar par de Strings:
  • s1 == s2 → verdadeiro se a string s1 for igual a s2
  • s1 != s2 → verdadeiro se a string s1 não for igual a s2
  • s1 < s2 → verdadeiro se a string s1 for menor que a s2
  • s1 > s2 → verdadeiro se a string s1 for maior que s2

Comparar inteiro

Apesar do livro não falar sobre comparação de inteiros, achei interessante colocar aqui.
  • -lt → (less than), menor que, equivalente ao <.
  • -gt → (greather than), maior que, equivalente ao >.
  • -le → (less or equal), menor ou igual, equivalente ao <=.
  • -ge → (greater or equal), maior ou igual, equivalente ao >=.
  • -eq → (equal), igual, equivale ao =.
  • -ne → (not equal) diferente. Equivale ao != que usamos a pouco.

Comando test

Para representar a condição and é && para representar "ou" é || e a negação é representado pela exclamação !.

Exemplo:

#!/bin/bash
A=5
B=15
if [ $A == 5 ] && [ $B == 15 ]; then
    echo "Verdadeiro"
else
    echo "Falso"
fi
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Laço for

O laço for, como encontrado em outras linguagens de programação, é criado usando um let aninhado (assim como o test utiliza colchetes, pode-se representar o let com dois parênteses. Exemplo: ((Variáveis)))

Exemplo:

#!/bin/bash
#Conta de 1 até 9


for((CONTATODOR=1 ; CONTADOR<10 ; CONTADOR++)) ; do
    printf "\n O contador vale agora %d \t" "$CONTADOR"
done
exit 0

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Comando printf / Variáveis
   3. Como ler do teclado / Expressões aritméticas
   4. Comando if e test / Laço for
   5. Funções de shell
   6. Exercícios
Nenhum artigo encontrado.

Programação com Shell Script

Mostrando dicas ao iniciar o terminal

Simples e rápido: matando todos os processos de um usuário

Introdução a LUA, uma poderosa linguagem de programação

Montando, monitorando e gerando logs dos compartilhamento NFS automaticamente

#1 Comentário enviado por removido em 13/12/2013 - 14:06h
Cara,

Excelente trabalho!
#2 Comentário enviado por calebebastos em 13/12/2013 - 14:13h
Fico Feliz que tenha gostado.

Abraço

#3 Comentário enviado por kirito em 13/12/2013 - 18:32h
Seu artigo está ótimo, mas só uma pequena dúvida..
Se você colocar a primeira linha como #!/bin/interpretador, não a necessidade de chamar o interpretador(bash), é só dar a permissão de execução e rodar o programa, ou estou errado ?
Sou iniciante em Shell, então talvez eu esteja falando besteira kk
#4 Comentário enviado por calebebastos em 13/12/2013 - 19:36h
Bem na distribuição que eu uso, eu sempre utilizo o comando bash, costuma não funcionar sem por causa de permissões de execução ai acho mais prático utilizar ele. Se vc der premissão ao arquivo basta clicar nele. Agora essa primeira linha com o caminho do interpretador em um bom script sempre tem que ter, dê uma olhada na parte de Script bem comportado, faz parte do cabeçalho. Faça o teste ai e nos conte. Espero ter ajudado. Obrigado pelo comentário. Abraço
#5 Comentário enviado por kirito em 14/12/2013 - 12:04h
Obrigado pela esclarecimento e atenção. Tive essa dúvida porque em meus scripts eu dou o comando para dar permissão de execução e rodo o programa. Estou pensando em publicar um artigo para executar programas em C e em Assembly mais rápido.. Obrigado novamente, e meus parabéns pelo o ótimo artigo!
#6 Comentário enviado por calebebastos em 15/12/2013 - 13:39h
Bacana, faça o artigo é um tema bem interessante e qualquer dúvida tamo ai. VL
#7 Comentário enviado por ragen em 16/12/2013 - 11:50h
Favoritado! A didática do artigo é excelente.

Abs

Ragen
#8 Comentário enviado por calebebastos em 16/12/2013 - 13:54h
Obrigado ragen, fico feliz que tenha gostado. Abraço
#9 Comentário enviado por azk em 18/12/2013 - 09:09h
Belo artigo!
Obrigado pela contribuição, Calebe....

favoritado
;-))
#10 Comentário enviado por ricardoolonca em 18/12/2013 - 10:00h
Parabéns pelo artigo. Está muito bom.

Alguns comentários:
1- O script não precisa ser salvo com a exstensão .sh. Neste caso, a extensão serve apenas para nós sabermos que o arquivo é um script bash. Mas ele pode ter qualquer extensão, ou nem ter extensão nenhuma.

2- Para executar, você pode usar:
bash arquivo.sh

ou dar permissão de execusão com o comando
chmod +x arquivi.sh

e executá-lo com uma das seguintes formas:
./arquivo.sh
/caminho/completo/do/arquivo.sh

3- Para efetuar cálculos, você pode usar a seguinte forma:

soma
x=$[2+3]

multiplicação
x=$[2*3]

Sempre uso os sites abaixo como referência. O primeiro é sobre o bash, e o segundo é sobre o dialog, que é uma forma de colocar menus em seus script

http://aurelio.net/shell/canivete.html
http://aurelio.net/shell/dialog/#menu

Outros artigos de exemplo:
http://ricardoolonca.blogspot.com.br/2012/08/como-gerar-numeros-aleatorios-em-script.html
http://ricardoolonca.blogspot.com.br/2013/09/script-bash-com-cores.html
http://ricardoolonca.blogspot.com.br/2012/07/incremente-seus-scripts-bash-com-dialog.html
#11 Comentário enviado por calebebastos em 21/12/2013 - 13:09h
Obrigado pelo comentário e azk4n e ricardoolonca. Abraço
#12 Comentário enviado por davidsiqueira em 24/12/2013 - 02:07h
muito bom seu trabalho
#13 Comentário enviado por calebebastos em 24/12/2013 - 17:26h
Obrigado pelo comentário davidsiqueira. Abraço
#14 Comentário enviado por alanvictorjp em 08/01/2014 - 06:14h
Muito bom!

ricardoolonca $[], essa pra mim é nova, vlw!
#15 Comentário enviado por renato473 em 25/02/2014 - 23:20h
otimo
#16 Comentário enviado por manoelmarins em 10/05/2018 - 21:59h
Muito bom.
Devia ter acreditado mais no linux.

Contribuir com comentário

Entre na sua conta para comentar.