Unix / Linux - Exemplo de operadores de teste de arquivo Shell
Temos alguns operadores que podem ser usados para testar várias propriedades associadas a um arquivo Unix.
Assuma uma variável file contém um nome de arquivo existente "teste", cujo tamanho é 100 bytes e tem read, write e execute permissão em -
Operador | Descrição | Exemplo |
---|---|---|
-b file | Verifica se o arquivo é um arquivo especial de bloco; se sim, então a condição se torna verdadeira. | [-b $ file] é falso. |
-c file | Verifica se o arquivo é um arquivo especial de caracteres; se sim, então a condição se torna verdadeira. | [-c $ file] é falso. |
-d file | Verifica se o arquivo é um diretório; se sim, então a condição se torna verdadeira. | [-d $ file] não é verdade. |
-f file | Verifica se o arquivo é um arquivo comum em oposição a um diretório ou arquivo especial; se sim, então a condição se torna verdadeira. | [-f $ file] é verdadeiro. |
-g file | Verifica se o arquivo tem seu conjunto de bits de ID de grupo (SGID) definido; se sim, então a condição se torna verdadeira. | [-g $ arquivo] é falso. |
-k file | Verifica se o arquivo tem o bit sticky definido; se sim, então a condição se torna verdadeira. | [-k $ file] é falso. |
-p file | Verifica se o arquivo é um canal nomeado; se sim, então a condição se torna verdadeira. | [-p $ file] é falso. |
-t file | Verifica se o descritor de arquivo está aberto e associado a um terminal; se sim, então a condição se torna verdadeira. | [-t $ file] é falso. |
-u file | Verifica se o arquivo tem seu conjunto de bits Set User ID (SUID); se sim, então a condição se torna verdadeira. | [-u $ arquivo] é falso. |
-r file | Verifica se o arquivo é legível; se sim, então a condição se torna verdadeira. | [-r $ file] é verdadeiro. |
-w file | Verifica se o arquivo é gravável; se sim, então a condição se torna verdadeira. | [-w $ file] é verdadeiro. |
-x file | Verifica se o arquivo é executável; se sim, então a condição se torna verdadeira. | [-x $ file] é verdadeiro. |
-s file | Verifica se o tamanho do arquivo é maior que 0; se sim, então a condição se torna verdadeira. | [-s $ file] é verdadeiro. |
-e file | Verifica se o arquivo existe; é verdadeiro mesmo se o arquivo for um diretório, mas existir. | [-e $ file] é verdadeiro. |
Exemplo
O exemplo a seguir usa todos os file test operadores -
Suponha que um arquivo variável contenha um nome de arquivo existente "/var/www/tutorialspoint/unix/test.sh" cujo tamanho é 100 bytes e tem read, write e execute permissão -
#!/bin/sh
file="/var/www/tutorialspoint/unix/test.sh"
if [ -r $file ]
then
echo "File has read access"
else
echo "File does not have read access"
fi
if [ -w $file ]
then
echo "File has write permission"
else
echo "File does not have write permission"
fi
if [ -x $file ]
then
echo "File has execute permission"
else
echo "File does not have execute permission"
fi
if [ -f $file ]
then
echo "File is an ordinary file"
else
echo "This is sepcial file"
fi
if [ -d $file ]
then
echo "File is a directory"
else
echo "This is not a directory"
fi
if [ -s $file ]
then
echo "File size is not zero"
else
echo "File size is zero"
fi
if [ -e $file ]
then
echo "File exists"
else
echo "File does not exist"
fi
O script acima produzirá o seguinte resultado -
File does not have write permission
File does not have execute permission
This is sepcial file
This is not a directory
File size is not zero
File does not exist
Os pontos a seguir devem ser considerados ao usar operadores de teste de arquivo -
Deve haver espaços entre os operadores e as expressões. Por exemplo, 2 + 2 não está correto; deve ser escrito como 2 + 2.
if...then...else...fi declaração é uma declaração de tomada de decisão que foi explicada no próximo capítulo.