Conhecendo o test

Publicado por Carlos Affonso Henriques. em 07/09/2007

[ Hits: 26.570 ]

 


Conhecendo o test



Este é um trecho extraído do livro Linux Shell Scripting with Bash de Ken O. Burtch. Uma das mais completas e didáticas publicações sobre Shell, traduzido e adaptado por mim.

Embora não seja um tema inédito e nem mesmo de minha autoria, penso ser de grande utilidade para todos.

O comando test do Bash testa o conteúdo de uma string, pode ser um arquivo, uma variável, compara valores numéricos ou não.

O test avalia se uma determinada condição dada e se ela for verdadeira a variável $? é retornada com o valor 0 e se falsa o valor é 1.

No shell o comando test pode também ser representado por colchetes, para assemelhá-lo mais com o comando test de outras linguagens de programação. Ex:

test 1 = 1; echo $?

A saída desta condição é 0 por ser ela verdadeira.

Também pode ser escrita da seguinte forma:

[ 1 = 1 ]; echo $?

São os seguintes parâmetros que podem ser aplicados ao test.
  • -b arquivo - Verdadeiro se o arquivo é um block device.
  • -c arquivo - Verdadeiro se o arquivo é um character device.
  • -d arquivo - Verdadeiro se o arquivo é um diretório.
  • -e arquivo - Verdadeiro se o arquivo existe.
  • f1 -ef f2 - (equivalent file) Verdadeiro se o arquivo f1 é um hard-link para f2.
  • n1 -eq n2 - (equal) Verdadeiro se n1 for igual a n2.
  • -f arquivo - Verdadeiro se o arquivo existe e é um arquivo regular.
  • n1 -ge n2 - (greater than or equal) Verdadeiro se n1 maior ou igual a n2.
  • n1 -gt n2 - (greater than) Verdadeiro se n1 for maior que n2.
  • -g arquivo - Verdadeiro se o SGID estiver ativado.
  • -G file - Verdadeiro se o arquivo (efetivamente) pertencer ao grupo sob qual o script estiver rodando.
  • -h arquivo - Verdadeiro de o arquivo for um link simbólico.
  • -k arquivo - Verdadeiro se o arquivo tiver a permissão sticky bit ativada.
  • n1 -le n2 - (less than or equal) Verdadeiro se n1 menor ou igual a n2.
  • n1 -lt n2 - (less than) Verdadeiro se n1 menor que n2.
  • -n s (or just s)-(not null) Verdadeiro se a string não for vazia ou nula.
  • -N arquivo - Verdadeiro se o arquivo tiver novo conteúdo (desde a última vez que foi lido).
  • n1 -ne n2 - (not equal) Verdadeiro se n1 não for igual a n2.
  • -O file - Verdadeiro se o arquivo pertencer ao usuário sob o qual o script estiver rodando.
  • f1 -nt f2 (newer than) Verdadeiro se o arquivo f1 for mais recente que f1.
  • f1 -ot f2 (older than) Verdadeiro se o arquivo f1 for mais antigo que f1.
  • -p file - Verdadeiro se o arquivo for um pipe.
  • -r file - Verdadeiro se um arquivo for lido (pelo seu script).
  • -s arquivo - Verdadeiro se o arquivo existe e não estiver vazio.
  • -S arquivo - Verdadeiro se o arquivo for um socket.
  • -t fd - Verdadeiro se o descritor do arquivo estiver aberto em um terminal.
  • -u arquivo - Verdadeiro se o arquivo tiver set-user-id (suid) ativada.
  • -w arquivo - Verdadeiro se o arquivo tiver permissão de escrita (pelo seu script).
  • -x arquivo - Verdadeiro se o arquivo for executável.
  • -z s - (zero length) Verdadeiro se a string for igual a zero ou não possuir nenhum valor atribuído. Ex. variável nula ou arquivo vazio.

Test Command String Tests:
  • s1 = s2 - Verdadeiro se a string s1 é igual a s2.
  • s1 != s2 - Verdadeiro se a string s1 for diferente de s2.
  • s1 < s2 - Verdadeiro se a string s1 for menor que s2.
  • s1 > s2 - Verdadeiro se a string s1 for maior que s2.

Classes de caracteres:
  • [:alnum:] - Alfanumérica
  • [:alpha:] - Alfabética
  • [:ascii:] - Caracteres ASCII
  • [:blank:] - Espaço ou TAB
  • [:cntrl:] - Caracteres de controle
  • [:digit:] - Dígitos decimais
  • [:graph:] - caracteres gráficos
  • [:lower:] - caracteres minúsculos
  • [:print:] - não são caracteres de controle
  • [:punct:] - Caracteres de pontuação
  • [:space:] - Whitespace (espaço em branco)
  • [:upper:] - caracteres maiúsculos
  • [:xdigit:] - dígitos hexadecimais

ASCII C Escape Expansion:
  • \a - Alerta (bip sonoro)
  • \b - Backspace
  • \e - Escape

Expressões:
  • \f - Form feed
  • \n - New line
  • \r - Retorno de carro (trás o cursor para o início da linha)
  • \t - Horizontal tab
  • \v - Vertical tab
  • \\ - A literal backslash
  • \' - Citação única
  • \nnn - Valor ASCII octal para um caractere (até 3 dígitos)
  • \xnnn - Valor ASCII hexadecimal para um caractere (até 3 dígitos)

Outras dicas deste autor

RAID 5 com apenas dois discos, ou menos

Conectores e terminais para Raspberry Pi, Arduino e outros dispositivos

Lógica booleana com o test

CentOS 6.5 (com Intel i915) - Erro após upgrade: "server terminated with error (2); no screens found" [Resolvido]

Sed para formatar endereços MAC

Leitura recomendada

Shell Script nosso de cada dia - Episódio 1

Aulas Shell Script do zero - Parte 8

Verificar Conexão e Montar Servidor SAMBA

Variáveis em bash

Ocultando a versão do seu BIND

  

Comentários
[1] Comentário enviado por minduim em 14/04/2009 - 11:50h

Socorro!!!
Por favor me ajuda....
http://www.vivaolinux.com.br/topico/Shell-Script/Como-converter-string-para-float-e-integer/



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts