Aula 7.0 - História e exemplos de códigos
Ken Thompson, quando estava criando o kernel UNIX (década de 70) com Dennis Ritchie, precisou criar uma ferramenta para se comunicar com o kernel de uma forma mais simples, essa ferramenta era o Thompson Shell, um interpretador de comandos.
Mais tarde, Stephen Bourne se interessou pela ferramenta e criou sua versão chamada Bourne SHell, que depois se tornou o interpretador padrão do UNIX.
Com o tempo surgiram ferramentas baseadas no Bourne SHell, por conta das restrições das licenças de uso do UNIX. Assim surgiu o bash, "Bourne-Again SHell", em 1989. Uma evolução retro-compatível muito mais interativa, que acabou se tornando padrão nos sistemas UNIX diante. Portanto ShellScript são comandos que podem ser lidos e executados pelo bash ou outro interpretador (shell).
Os interpretadores de comandos geralmente possuem dois modos de execução: o modo interativo e o modo não interativo. O modo interativo tem esse nome pois você mantém um diálogo com o interpretador, bash por exemplo, assim o shell script é basicamente a automatização desse processo eliminando boa parte da interação humana.
“Se colocarmos diversas linhas de comandos em um arquivo texto simples, teremos em mãos um Shell Script, ou um script em shell, já que Script é uma descrição geral de qualquer programa escrito em linguagem interpretada, ou seja, não compilada.”[1]
- Windows
Os arquivos batch do Windows, os famosos .bat, são exemplos de Shell Scripts executados pelo cmd.exe. Atualmente o Windows 10 suporta ShellScripts para o interpretador bash, desde que habilitado os recursos do “Subsistema Windows para Linux” no sistema.
- Linux
Bash é o shell padrão do projeto GNU, portanto está presente na maioria das distribuições Linux ao abrir o terminal.
Um shellscript pode ser executado apenas digitando ./nome_do_arquivo
Geralmente é necessário dar permissão de execução ao shellscript, para isso basta digitar no terminal: chmod +x nome_do_arquivo .
Como é um Hello World em ShellScript? Simples, confira:
Note que “#!/bin/bash” mesmo estando comentada, serve para indicar o shell a ser usado.
- Variáveis:
ShellScript é fracamente tipada, portanto pode-se armazenar qualquer valor nas variáveis. Toda variável começa com qualquer letra, maiúscula, minúscula ou começa com _ (underscore).
No código da imagem acima, a variável "_var" recebe uma string e então é impresso na tela o conteúdo da variável utilizando do comando "echo". Mas atenção, se você deixar espaço entre a variável e o símbolo de "igual" (atribuição), você receberá um erro de "command not found" (comando não encontrado).
Um caractere útil é o caractere "\" (barra invertida), ele serve para você utilizar caracteres que já são reservados pela linguagem:
Você também pode atribuir comandos do terminal em variáveis, para isso você necessita utilizar do simbolo de case "`" (acento invertido) ou $(). Confira:
Como ler do teclado o que o usuário digitar? Simples, use o comando "read" seguido de uma variável:
- if else
A imagem abaixo ilustra a utilização da estrutura if else:
Note que é necessário deixar sempre um espaço ao redor dos colchetes [ ]. Também é importante saber que o "if" em ShellScript sempre testa a saída de um comando e não uma condição e que o "if "sempre termina com "fi".
Bastante intuitivo o código. Sim, é necessário aqueles dois pontos e vírgulas, note também que o fechamento do case se dá pela palavra "esac".
- for
Será demonstrado abaixo duas formas de realizar um loop for:
O primeiro "for" da imagem é um "for" simples decrescente, aquele "-n" ali é para não quebrar linha. Já o segundo "for" possui intervalos, para isso utiliza-se o comando "seq" seguido do começo do loop, de quanto em quanto deve pular e até quanto deve ir o loop.
- while
Preciso nem explicar o loop while:
- funções
O uso de funções lembra muito a linguagem C. Note que "-le" significa "menor ou igual".
- argumentos
Passagem de argumentos, aqui o ShellScript ao ser executado espera por argumentos passados por linha de comando para que seja executado. O primeiro argumento é obtido pelo comando $0 que é o nome do próprio script. Sendo assim:
$0 – contém o nome do script que foi executado;
$1 … $n – contêm os argumentos na ordem em que foram passados;
$# - contém o número de argumentos que foi passado (desconsidera $0);
$* - retorna todos os argumentos de uma vez só;
A introdução termina por aqui, se gostou comente abaixo pois se a demanda for boa, trazemos mais conteúdo sobre ShellScript!
Fontes:
COMENTÁRIOS