Buscar

Aula 6 Shell Script 2 Arquivo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Superior de Analise e Desenvolvimento de Sistemas
Serviços Básicos de Redes para WEB
Fernando Costenaro Silva
fernando.costenaro@sc.senai.br
Shell Script
• Introdução
• Comandos
• Variáveis
• Comparação
• Laços de repetição
• Funções
• Vetores
• Getopts
Shell Script
Laços de repetição
• Os laços de repetição possibilitam executar um comando até
que uma condição seja alcançada. O BASH utiliza os
seguintes laços de repetição como padrão:
• while
• for
• until
• select
Laços de repetição - while
• O laço de repetição while permite executar comandos
repetidamente até que uma condição seja satisfeita. Ele
executa enquanto a expressão for verdadeira.
while [ expressão ]
do
#executa se enquanto a expressão for verdadeira
done
Laços de repetição - for
• O laço de repetição for opera e cima de uma lista de itens.
Ele executa os comandos até percorrer todos os itens da
lista.
for FILE in /etc/*.conf
do
echo $FILE
done
Laços de repetição - for
• Outras formas de executar o laço de repetição for:
for i in $(seq 10); do
echo $i;
done
for ((i=0; i<=5; i++)); do
echo "Executando o $i"
done
Laços de repetição - until
• O laço de repetição until permite executar comandos
repetidamente até que uma condição seja satisfeita. Ele
executa até a expressão se tornar verdadeira.
until [ expressão ]
do
#executa se até a expressão se tornar verdadeira
done
Laços de repetição - select
• O laço de repetição select fornece uma maneira fácil de
criar um menu numerado a partir do qual os usuários podem
selecionar opções.
select PIZZA in calabresa brigadeiro filé parma frango
do
case $PIZZA in
calabresa frango napolitana)
echo “Pizza normal - $PIZZA” ;;
brigadeiro)
echo “Pizza doce - $PIZZA” ;;
*)
echo “sabor não encontrado - $PIZZA”
break ;;
esac
done
Laços de repetição - break
• Os laços de repetição podem utilizar a expressão de
controle break para interromper a execução e sair fora do
laço.
#!/bin/bash
$A=0
while [ $A -lt 10 ]
do
echo $A
if [ $A -eq 5 ]
then
break
fi
A=$(expr $A + 1)
done
Laços de repetição - continue
• Os laços de repetição podem utilizar a expressão continue
para interromper a execução e voltar para o início do laço.
#!/bin/bash
NUMS="1 2 3 4 5 6 7"
for NUM in $NUMS
do
Q=$(expr $NUM % 2)
if [ $Q -eq 0 ]
then
echo “Numero PAR!"
continue
fi
echo " Numero IMPAR!"
done
Laços de repetição
• Exercícios:
6 – Faça um script utilizando laços para listar todos os
arquivos de um diretório.
7- Faça um script que crie uma pasta de backup e copie
todos os arquivos do tipo .txt diretório atual para a pasta de
backup, com laço de repetição for.
for FILE in $HOME/*.txt
do
echo $FILE
done
Funções
• Funções podem ser utilizadas para permitir o
reaproveitamento de código já construído ou simplesmente
estruturar o programa em partes que possam ser
logicamente compreendidos de forma isolada.
#!/bin/bash
function hello {
echo Hello
}
hello
echo World!
Funções
• As funções podem ter variáveis locais. Basta adicionar a
expressão “local” na frente da variável:
#!/bin/bash
function say #define a função say
{
local R1=' Hello' #variável local
R2=' World!' #variável normal (ou global)
}
say #chama a função say
echo $R1 ; echo $R2 #imprime as variáveis declaradas na função say
Funções
• Funções podem receber argumentos para realizar alguma
operação e retornar valores numéricos:
#!/bin/bash
function say {
echo $1; echo $2; echo $3
MEDIA=$(( ($1 + $2 + $3)/3 ))
}
VAR1=1
say $VAR1 9 2
echo $MEDIA
#!/bin/bash
function say {
SOMA=$(( $VAL1 + $VAL2 ))
echo "$SOMA"
}
VAL1=25
VAL2=15
VALOR=$( say ) # ou valor='say'
VALOR=$(($VALOR + 11))
echo $VALOR
Funções
• Exercícios:
8 – Criar um script, utilizando funções, para exibir e
executar as opções:
a) Ler e mostrar os nomes,
b) Ler e mostrar os IDs
c) Ler e mostrar os grupos dos usuários
• Do arquivo (/etc/group) para as linhas que que possuem ID
maior ou igual a 1000 e diferente de 65534.
Vetores
• Um vetor é uma variável que armazena múltiplos valores.
• O índice inicial é ZERO: [0][1][2][...][n].
• Declaração:
#!/bin/bash
array1=(1 2 3 4)
declare -a array2=( "um" "do is" tres 4)
array3[0]=Maria
array3[1]=Joao
array3[2]=Mauro
array3[3]=Fernando
array3[4]=Paula
array3[5]=Merlin
Vetores
• Exibindo os elementos e pedaços do vetor e dos elementos:
#exibindo elementos
echo ${array1[1]} #mostra o valor na posição 1
echo ${array2[*]} #mostra todos os valores (* ou @)
#exibindo pedaços do vetor/elemento
echo ${array2[@]:1:3} #mostra 3 elementos a partir do índice 1
echo ${array3[3]:0:3} #mostra 3 chars a partir do índice 0 do elemento na posição 3
Vetores
• Exibindo o número de elementos e chars em um elemento:
#exibindo o numero de elementos/chars
echo ${#array3[@]} #numero de elementos no vetor
echo ${#array3} #numero de chars no primeiro elemento do vetor
echo ${#array3[3]} #numero de chars no elemento no indice 3 do vetor
Vetores
• Para remover (unset) um item do vetor.
#removendo um item do vetor
array4=(a b c d e f) #cria um novo vetor
echo ${array4[*]} #mostra os elementos do vetor
unset array4[3] #remove o elemento no indice 3 do vetor
echo ${array4[3]} #mostra o elemento no indice 3 do vetor (null)
echo ${array4[*]} #mostra os elementos do vetor
• O unset também pode remover o vetor inteiro (unset array).
Vetores
• Para remover completamente um item do vetor e
concatenação de vetores:
#removendo um item completamente do vetor
pos=3
array4=(${array4[@]:0:$pos} ${array4[@]:$(($pos + 1))}) # concatena dois subvetores
echo ${array4[3]} #mostra o elemento no indice 3 do vetor
echo ${array4[*]} #mostra os elementos do vetor
Vetores
• Criando e carregando de um arquivo e salvando em um
vetor:
#criar um arquivo (cat logfile) e escreva algo em 3 linhas
printf 'Programando\nShell\nScript' > logfile #cria o arquivo logfile
#carrega o arquivo
readarray array5 < "./logfile" #o arquivo lido esta no mesmo diretorio
#mostra os elementos do array
echo ${array5[@]} #mostra os elementos do vetor
echo ${array5[1]} #mostra o elemento no indice 1 do vetor
Vetores
9 – Crie um script, utilizando funções para interagir com uma lista
de nomes e telefones. Ao iniciar o script, leia o arquivo ‘lista’, crie o
arquivo se o mesmo não existir. Salvar os dados do arquivo em um
vetor. Utilizar select para exibir um menu com 5 opções para interagir
com o vetor.
A – adicionar (nome e telefone no padrão Nome;1234 );
L – listar nomes;
B – buscar pelo telefone (passar o nome);
R – remover cadastro (passar o nome);
S – salvar vetor no arquivo;
Q – quit (sair)
Getopts
• O comando getopts é usado para verificar os argumentos
passados através das linhas de comando. Para usarmos na
chamada do script usamos a seguinte estrutura:
./script –a valor –b valor2
• Para ler os valores: (o ‘:’ indica que possui parâmetro)
while getopts a:b opt; do
case $opt in
a) #executa opção a
valor="${OPTARG}“ ;;
b) #executa opção a
;;
esac
done
Getopts
• Para verificar o número de parâmetros:
VARS = 2 # numero de variáveis = 2
if [ $# -lt $VARS ]; then
echo Faltam argumentos
fi
Getopts
• Exercícios:
• 10 - Crie um script que receba 2 argumentos: o nome (-n) e
o telefone (-t). Verificar se o número de argumentos é válido.
Se for válido, salvar no final do arquivo “listaTel” o nome e o
telefone com um separador ( ex.:Nome;123456 ).

Outros materiais