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.

[ Hits: 26.995 ]

Por: Calebe Bastos Oliveira em 13/12/2013


Comando printf / Variáveis



Comando printf

O comando interno printf, é utilizado para imprimir uma mensagem na tela. Abaixo, há alguns exemplos de sua utilização.

Para imprimir números inteiros, utiliza-se o comando abaixo:

printf "%d\n" 5

Obs.: o código %d, representa um número inteiro.

Pode-se inserir mais de um número em um mesmo comando, basta colocar dois códigos de formatação, conforme o exemplo abaixo:

printf "Há %d clientes com compras acima de %f.\n" 50 20000

Obs.: o código %f representa um número de ponto flutuante.

Para imprimir um número com sinal em uma coluna com largura de 10 caracteres, utilize o comando abaixo:

printf "%10d\n" 11

Códigos de formatação

Alguns exemplos de códigos de formatação que podem ser usados em conjunto com o comando printf:
  • %e :: exibe um número de ponto flutuante, mostrando em notação exponencial (também chamada de "científica").
  • %f (ou %F) :: exibe um número de ponto flutuante sem exponencial.
  • %g (General) :: deixa o bash escolher %e ou %f, dependendo do valor.
  • %d (ou %i) :: representa um número com sinal.
  • %s :: exibe uma string.
  • \t :: tabulação.
  • \n :: iniciar uma nova linha.
  • \\ :: barra invertida.

Declaração de variáveis

A linguagem Shell Script é fracamente tipada, isso quer dizer que não necessita ser declarada. Quando não se declara uma variável, ela é tratada como String.

A tradição dita que as variáveis sejam escritas em maiúsculo, pois a maior parte dos comandos são em minúsculo. Abaixo, estão alguns exemplos sobre como utilizar as variáveis.

Para atribuir uma String vazia, basta utilizar a variável da seguinte maneira:

CUSTO=

Para ver o que está contido dentro da variável, utiliza-se o símbolo do cifrão antes da variável, como mostra o exemplo abaixo:

printf "%s" $CUSTO

As aspas no Shell Script não são utilizadas para identificar um valor, como String, mas sim, para delimitar onde começa e termina o valor.

Teste os comandos abaixo compreender melhor:

CUSTO=Maria Joao Carlos

Se você tentar executar esse comando, você perceberá que ocorrerá um erro, pois o bash não consegue identificar que a palavra Joao e Carlos fazem parte da mesma estrutura.

Para que ele possa identificar Maria Joao Carlos como um único valor a ser recebido pela variável, você terá que delimitar utilizando aspas duplas, conforme o exemplo abaixo:

CUSTO="Maria João Carlos"
$ printf "%s" $CUSTO


Se você deseja colocar um valor contido em uma outra variável concatenando com outros valores, poderá fazer de duas formas:

1. A primeira, é delimitando a variável dentro das aspas duplas. Para entender melhor, teste o comando baixo.

TAXA=7,25
$ MENSAGEM_DA_TAXA="A taxa é ""$TAXA""%"
$ printf "%s" "$MENSAGEM_DA_TAXA"


2. A segunda forma, é delimitando a variável dentro de chaves, conforme o exemplo abaixo:

MENSAGEM_DA_TAXA="A taxa é ${TAXA} %"
$ printf "%s" "$MENSAGEM_DA_TAXA"


Uma observação importante, é que, se você utilizar aspas simples, o bash não reconhecerá como uma variável e sim como uma String. Teste o comando abaixo e verificará que será impresso na tela: $MENSAGEM_DA_TAXA

printf "%s" '$MENSAGEM_DA_TAXA'

Dica: o bash costuma dar erro de espaçamentos, então, sempre deixe sem espaço entre o sinal de igual, a variável e o valor. Exemplo:

Modo errado:

MENSAGEM_DA_TAXA = "A taxa é ${TAXA} %"

Modo correto:

MENSAGEM_DA_TAXA="A taxa é ${TAXA} %"

Atributos de variáveis

Todas as variáveis bash são armazenadas como Strings simples. Cada variável tem determinadas opções chamadas atributos, que podem ser ligadas, ou desligadas, usando o comando declare.

Para declarar uma variável do tipo inteiro, basta utilizar a opção -i no comando declare. Exemplo:

declare -i NUMERO_CONTAS=15
$ printf "%d" "NUMERO_CONTAS"


Para declarar uma constante utilizando o atributo -r do comando declare, assim o valor contido na variável não será modificado no decorrer do programa.

declare -r COMPANHIA="Smith and Jones"
$ printf "%s\n" "COMPANHIA"


Pode utilizar o atributo -p no comando declare para visualizar o que está contido na variável.

declare -p NUMERO_CONTAS

Para destruir a variável, utilize o comando unset, antes da variável:

unset CUSTO

Página anterior     Próxima página

Páginas do artigo
   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
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Introduzindo um pouco mais a fundo o shell script (revisado)

Wordpress em 30 segundos com WP-CLI

AWK - Introdução

Pipelines (Canalizadores)

Shell - Funções

  
Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts