Conhecendo o test

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

[ Hits: 26.536 ]

 


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

Conectores e terminais para Raspberry Pi, Arduino e outros dispositivos

SSH contornando o firewall com o Tor

Comando seq com saída em hexadecimal

IP estático no Amazon Linux

Construindo bridges Tor com Docker

Leitura recomendada

Dica para uso do echo

Funções em Shell Script

Aulas Shell Script do zero - Parte 3

Aulas Shell Script do zero - Parte 4

Shell script - Gerenciador de processos

  

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