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)