SISTEMAS OPERACIONAIS
Shell Script - parte 2
Professora Marcela Santos
profmarcelasantos@gmail.com
estrutura condicional - simples
#!/bin/bash
#exemplo de condicional simples em script
if cd /
then
echo "diretorio raiz encontrado"
fi
estrutura condicional - composta
#!/bin/bash
#exemplo de condicional simples em script
if ls /home/marcela_santos/teste
then
echo "diretorio teste encontrado"
else
echo "diretorio teste n encontrado"
fi
mais um exemplo de if composto
#!/bin/bash
echo -n "Digite o primeiro numero: "
read n1
echo -n "Digite o primeiro numero: "
read n2
if test $n1 -eq $n2
then
echo "Numero iguais"
fi
comparações
- -eq: Igual
- -ne :Diferente
- -gt: Maior
- -lt :Menor
- -o: Ou
- -d Se for um diretório
- -e Se existir
- -z Se estiver vazio
- -f Se conter texto
- -o Se o usuário for o dono
- -r Se o arquivo pode ser lido
- -w Se o arquivo pode ser alterado
estrutura case
- Case também é uma estrutura de controle de fluxo como o if, porém o case vai agir de acordo com os resultados exatos. Vejamos um exemplo:
#!/bin/sh
case $1 in
1) echo "Testando o case"
;;
*) echo "Você tem de entrar com um parâmetro válido"
;;
esac
for
- O for percorre uma lista de palavras, pegando uma por vez:
for numero in um dois três quatro cinco
do
echo "Contando: $numero"
done
- Uma ferramenta muito útil para usar com o for é o seq, que gera uma seqüência numérica.Para fazer o loop andar 10 passos, pode-se fazer:
for passo in $(seq 10)
o Pipe
- O pipe é utilizado quando queremos que a saída de um comando seja enviada como entrada para outro comando
- Encadeamento de processos
- Vamos testar o seu uso:
- digite ls -l
- agora vamos direcionar essa saida para o comando cut, por exemplo
for e uso do tr
#!/bin/shfor original in *; doresultado=`echo $original | tr '[:upper:]' '[:lower:]'`if [ ! -e $resultado ]; thenmv $original $resultadofidone
- Pesquise o que o comando tr faz
- Pesquise o uso do |
while
i=0
while test $i -le 10
do
i=$((i+1))
echo "Contando: $i"
done
grep
-
Procura texto e expressões dentro de um arquivo
- Sintaxe: $ grep [arquivo2] [arquivo3] ...
- Usado com bastante frequencia quando temos arquivos com muitas informações, mas queremos apenas extrair algo bem específico do conteúdo, utilizamos o grep.
- Ele procura por algum texto (um padrão) dentro de arquivos, retornando a linha correspondente ao desejado.
grep
#!/bin/sh
if grep -q $1 temporario
then
echo "encontrado"
else
echo "n achei"
fi
- Antes de executar este script crie um arquivo temporario
- Crie um script para verificar se um determinado usuario está cadastrado. O usuário é passado como parâmetro
tr
-
O tr transforma caracteres em outros caracteres (ou os remove).
-
Conseguimos fazer essa substituição caracter por caracter, mas não podemos utilizá-lo com um arquivo, mas apenas combinando com outros comandos.
#!/bin/bash
echo $* | tr -d ' '
cut
-
Separa um arquivo por campos e imprime apenas partes especificadas
#!/bin/sh
cut -d ":" -f 1,5 /etc/passwd | tr : '\t'
uniq
- Este comando verifica/remove as linhas duplicadas de um arquivo ordenado.
#!/bin/bash
cat /etc/passwd | cut -d : -f 7 | sort | uniq