3. História
●
Shell Script foi criada quando Dennis Ritchie e Ken
Thompson buscavam algo que oferecesse características
melhores do que os interpretadores de comandos usados
para interagir com o UNIX. Surge, então o Shell criado
por Stephen Bourne, conhecido como sh e foi lançado
em 1977 junto com o Unix Versão 7.
●
Outros Shells foram desenvolvidos, como o C Shell(csh),
Korn Shell(ksh), Z Shell(zsh), Bourne Again Shell(bash).
3
5. Paradigmas seguidos e características
●
ShellScript suporta apenas o paradigma imperativo
●
Linguagem interpretada.
●
Tipagem fraca e dinâmica
5
6. Mercado
6
● Automação de tarefas do dia-a-dia do desenvolvedor
● Automação de processo de deployment
● Instalação e configuração de sistemas operacionais
10. Sintaxe e Semântica
●
Para criar um script normalmente cria-se um arquivo com
extenão .sh.
●
Para executá-lo é necessário primeirament dar permissão
para execução:
●
chmod +x <nome_do_arquivo>.sh
●
Utilize ./<nome_do_arquivo>.sh para executar seu
script no diretório que foi criado.
●
OBS.: Caso queira executar seu script em qualquer parte
do sistema mova-o para um diretório que está presente
no seu PATH, caso não tenha permissão mova-o para o
diretório $HOME. 10
11. Sintaxe e Semântica
●
A primeira linha de qualquer script deverá ser um
comentário especificando qual shell interpretará as linhas
subsequentes do script. Se esta linha não exisitir, o shell
padrão do SO será utilizado.
●
Ex.: #!/bin/bash
11
12. Sintaxe e Semântica (Entrada e Saída)
●
O comando para saída no console é o echo.
●
Exemplo:
●
echo “Hello World”
●
O comando para ler dados do teclado é o read
●
Exemplo:
●
echo “Executar script agora? [s/n]”
●
read resposta
●
Para saídas formatadas usa-se a função printf.
●
Exemplo:
●
printf “%f” $variavel
12
13. ●
A declaração de variável é feita da seguinte forma:
●
<nomeDaVariavel>=<valor>
●
Não existe espaço entre o sinal “=”.
●
Exemplos:
●
idade=50
●
nome=”Fulano”
●
teste = “teste errado” (forma errada)
●
Todas as variáveis são globais por definição a não ser
que os comandos “local” ou “declare” sejam usados.
●
Constantes são criadas por meio da palvra reservada
readonly.
13
Sintaxe e Semântica (Variáveis e Constantes)
14. Sintaxe e Semântica (Comando test)
●
Comando utilizado para fazer vários tipos de verificações,
muito usado em estruturas de controle de fluxo(Ex.: if,
while)
14
15. Sintaxe e Semântica (Comando test)
15
Testes em variáveis
-lt Nº é menor que (LessThan)
-gt Nº é maior que (GreaterThan)
-le Nº é menor ou igual (LessEqual)
-ge Nº é maior ou igual (GreaterThan)
-eq Nº é igual (Equal)
-ne Nº é diferente (NotEqual)
= String é igual
!= String é diferente
-n String é não nula
-z String é nula
Testes em arquivos
-d É um diretório
-f É um arquivo normal
-r O arquivo tem permissão de leitura
-s
O tamanho do arquivo é maior que
zero
-w O arquivo tem permissão de escrita
-nt O arquivo é mais recente(NewerThan)
-ot O arquivo é mais antigo(OlderThan)
-ef O arquivo é o mesmo (EqualFile)
Operadores Lógicos
! Não
-a E
-o OU
16. Sintaxe e Semântica (controle de fluxo - if)
●
Sintaxe:
16
if <avaliação>
then
comandos
elif <avaliação>
then
comandos
else
comandos
fi
●
Exemplo:
echo "Digite o caminho do arquivo/diretorio"
read caminho
if test -d "$caminho"
then
echo "$caminho é um diretório"
fi
17. Sintaxe e Semântica (controle de fluxo - case)
●
Sintaxe:
17
case <variavel de controle> in
opcao1)
comandos
;;
opcao2)
comandos
;;
*)
<operação padrão>
esac
18. Sintaxe e Semântica (controle de fluxo - case)
●
Exemplo:
18
echo "Digite um número"
read num
case "$num" in
1)
echo "Você digitou 1"
;;
2)
echo "Você digitou 2"
;;
*)
echo "Você digitou outro número"
esac
19. Sintaxe e Semântica (controle de fluxo - select)
●
Sintaxe:
19
select <variável de controle> in <opções>
do
comandos
done
20. Sintaxe e Semântica (controle de fluxo - select)
●
Exemplo:
20
select i in mostrar_local_atual visualizar_usuarios_logados sair
do
case "$i" in
mostrar_path_atual)
pwd
;;
visualizar_usuarios_logados)
w
;;
sair)
exit
;;
esac
done
21. Sintaxe e Semântica (controle de fluxo - for)
●
Sintaxe:
21
for <variavel de controle> in lista
do
Comandos
done
●
“lista” pode ser uma lista de dados fixa ou retorno de
alguma função, como o ls.
●
Exemplos:
for i in $(seq 1 10)
do
echo "$i"
done
for i in $(ls /)
do
echo "$i"
done
22. Sintaxe e Semântica(controle de fluxo - while)
●
Sintaxe:
22
while <avaliação>
do
Comandos
done
●
Exemplo:
cat 'arquivo.txt' | while read i
do
echo $i
done
23. Sintaxe e Semântica(controle de fluxo - until)
●
Sintaxe:
23
until <avaliação>
do
Comandos
done
●
Exemplos:
i=0
until (( $i >= 10 ))
do
echo $i
((i++))
done
28. Sintaxe e Semântica(funções)
●
Exemplo:
28
function eh_primo()
{
resultado="$1 é primo"
limite=$(($1 - 1))
for i in $(seq 2 $limite)
do
if (( $1%$i==0 ))
then
resultado="$1 não é primo"
break
fi
done
echo $resultado
return 0
}
eh_primo $1
29. Avaliações
29
Facilidade no aprendizado Não é eficiente
Facilidade para criar novos comandos
Baixa legibilidade
Desenvolvimento rápido Baixa confiabilidade
Pobre em recursos nativos.