Home > Aluno, IFPE, TI > [Shell] Tipos de controle e testes

[Shell] Tipos de controle e testes

Uma das principais dificuldades para quem trabalha com Shell Script no Linux é a quantidade de tipos de controles e testes nas estruturas de loop e repetição. Segue uma lista dos principais:

Comparações entre números

 
  -eq : igual a
  -ne : diferente de
  -gt : maior que
  -ge : maior ou igual a
  -lt : menor que
  -le : menor ou igual a
  -a : AND binário (bit a bit)
  -o : OR binário (bit a bit)

Comparações entre strings usando []

 
  = : igual a
  != : diferente de
  -z : string de tamanho zero

Comparações entre strings usando Shell scripts

 
  = : maior ou igual a (lexicográfico)

Associações entre condições

 
  && : AND lógico
  || : OR lógico

Os operadores de teste em arquivos permitem verificar propriedades de entradas no sistema de arquivos. Eles são usados na forma -op, onde op corresponde ao teste desejado. Os principais testes são:

 
    e : a entrada existe
    r : a entrada pode ser lida
    w : a entrada pode ser escrita
    O : o usuário é o proprietário da entrada
    s : tem tamanho maior que zero
    f : é um arquivo normal
    d : é um diretório
    L : é um link simbólico
    b : é um dispositivo orientado a bloco
    c : é um dispositivo orientado a caracatere
    p : é um named pipe (fifo)
    S : é um socket special file
    u : tem o bit SUID habilitado
    g : tem o bit SGID habilitado
    G : grupo da entrada é o mesmo do proprietário
    k : o stick bit está habilitado
    x : a entrada pode ser executada
    nt : Verifica se um arquivo é mais novo que outro
    ot : Verifica se um arquivo é mais velho que outro
    ef : Verifica se é o mesmo arquivo (link)

Segue um exemplo:

 
arquivo='/etc/passwd' 

if [ -e $arquivo ] 
then 
   if [ -f $arquivo ] 
   then 
      if [ -r $arquivo ] 
      then 
         source $arquivo 
      else 
         echo "Nao posso ler o arquivo $arquivo"
      fi 
   else 
      echo "$arquivo não é um arquivo normal"
   fi 
else 
   echo "$arquivo não existe"
fi

 

  1. No comments yet.
Submitting Comment, Give me a second...

Leave a comment

 

Allowed tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. No trackbacks yet.