SISTEMAS OPERACIONAIS

Shell Script - parte 2

Professora Marcela Santos
profmarcelasantos@gmail.com

estrutura condicional - simples

  • O if em shell script


#!/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
      • ls -l | cut -d " " -f  1

for e uso do tr

#!/bin/sh
for original in *; do
resultado=`echo $original | tr '[:upper:]' '[:lower:]'`
if [ ! -e $resultado ]; then
mv $original $resultado
fi
done

  • 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 


  • Sintaxe: $ cut [opções]


#!/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

Sistemas Operacionais - Shell Script Parte 2

By Marcela Santos

Sistemas Operacionais - Shell Script Parte 2

  • 967