teste (Unix) - test (Unix)
Outros nomes | [ |
---|---|
Desenvolvedor (s) | Vários open-source e comerciais desenvolvedores |
Sistema operacional | Unix , semelhante ao Unix , Plan 9 , IBM i |
Plataforma | Plataforma cruzada |
Modelo | Comando |
Licença | coreutils : GPLv3 + |
test é um utilitário de linha de comando encontrado em Unix , Plan 9 e sistemas operacionais semelhantes ao Unix que avalia expressões condicionais . test foi transformado em um comando shell embutido em 1981 com UNIX System III e ao mesmo tempo disponibilizado sob o nome alternativo [ .
Visão geral
O test
comando no Unix avalia o expression
parâmetro. Nas implementações de shell mais recentes, é um shell embutido , embora a versão externa ainda exista. Na segunda forma do comando, os [ ]
(colchetes) devem ser circundados por espaços em branco (isso porque [
é um programa e os shells compatíveis com POSIX exigem um espaço entre o nome do programa e seus argumentos). Deve-se testar explicitamente os nomes de arquivo no C shell . A substituição do nome do arquivo ( globbing ) faz com que o script de shell seja encerrado.
O test
comando não deve ser confundido com a [[
palavra reservada que foi introduzida com ksh88. O último não é um comando, mas parte da sintaxe ksh88 e não aplica a substituição de nome de arquivo a expressões glob.
A versão do test
pacote GNU coreutils foi escrita por Kevin Braunsdorf e Matthew Bradburn. O comando de teste também foi transferido para o sistema operacional IBM i .
Sintaxe
test expression
ou
[ expression ]
Argumentos
Os seguintes argumentos são usados para construir este parâmetro:
-e FileName - FileName exists
Todos os argumentos restantes retornam verdadeiro se o objeto (arquivo ou string) existir e a condição especificada for verdadeira.
-b Filename - Returns a True exit value if the specified FileName exists and is a block special file -c FileName - FileName is a character special file -d FileName - FileName is a directory -f FileName - FileName is a regular file -g FileName - FileName's Set Group ID bit is set -h FileName - FileName is a symbolic link -k FileName - FileName's sticky bit is set -L FileName - FileName is a symbolic link -p FileName - FileName is a named pipe (FIFO) -r FileName - FileName is readable by the current process -s FileName - FileName has a size greater than 0 -t FileDescriptor - FileDescriptor is open and associated with a terminal -u FileName - FileName's Set User ID bit is set
-w FileName - FileName's write flag is on. However, the FileName will not be writable on a read-only file system even if test indicates true
-x FileName - FileName's execute flag is on If the specified file exists and is a directory, theTrue
exit value indicates that the current process has permission to changecd
into the directory.
Extensões Korn Shell não padrão :
file1 -nt file2 - file1 is newer than file2 file1 -ot file2 - file1 is older than file2 file1 -ef file2 - file1 is another name for file2 - (symbolic link or hard link)
Argumentos de string
Em Perl , essas seções são invertidas: eq
é um operador de string e ==
é um operador numérico e assim por diante para os outros.
-n String1 - the length of the String1 variable is nonzero -z String1 - the length of the String1 variable is 0 (zero) String1 = String2 - String1 and String2 variables are identical String1 != String2 - String1 and String2 variables are not identical String1 - true if String1 variable is not a null string
Argumentos numéricos
Integer1 -eq Integer2 - Integer1 and Integer2 variables are algebraically equal -ne - not equal -gt - greater than -ge - greater or equal -lt - less than -le - less or equal
Operadores
test
argumentos podem ser combinados com os seguintes operadores:
! - Unary negation operator -a - Binary AND operator -o - Binary OR operator (the-a
operator has higher precedence than the-o
operator) \(Expression\) - Parentheses for grouping must be escaped with a backslash\
Os operadores -a
e -o
, junto com parênteses para agrupamento, são extensões XSI e, portanto, não são portáteis. Em scripts shell portáteis, o mesmo efeito pode ser conseguido ligando várias chamadas de test
juntamente com os &&
e ||
operadores e parênteses.
Status de saída
Este comando retorna os seguintes valores de saída:
0 - The Expression parameter is true 1 - The Expression parameter is false or missing >1 - An error occurred
Exemplos
1. Para testar se um arquivo é inexistente ou vazio, digite:
if test ! -s "$1"
then
echo $1 does not exist or is empty.
fi
Se o arquivo especificado pelo primeiro parâmetro posicional para o procedimento de shell, $ 1, não existir ou for de tamanho 0, o comando de teste exibirá a mensagem. Se $ 1 existe e tem um tamanho maior que 0, o comando de teste não exibe nada.
Nota: Deve haver um espaço entre a função -s e o nome do arquivo.
As aspas em torno de $ 1 garantem que o teste funcione corretamente, mesmo se o valor de $ 1 for uma string nula. Se as aspas forem omitidas e $ 1 for a string vazia, o comando de teste exibirá a mensagem de erro:
test: argument expected.
2. Para fazer uma comparação complexa, digite:
if [ "$#" -lt 2 ] || ! [ -e "$1" ]
then
exit
fi
Se o procedimento shell receber menos de dois parâmetros posicionais ou se o arquivo especificado por $ 1 não existir, o procedimento shell será encerrado. A variável shell especial $ # representa o número de parâmetros posicionais inseridos na linha de comando que inicia este procedimento shell.
Veja também
Referências
Leitura adicional
- Robbins, Arnold; Nelson HF Beebe (2005). "6.2.4 O comando de teste". Script de shell clássico: comandos ocultos que desbloqueiam o poder do Unix . O'Reilly Media, Inc. pp. 120-128. ISBN 978-0-596-55526-9 .
- Ian Shields (20 de fevereiro de 2007). "Dica do Linux: funções de teste e comparação Bash" . IBM DeveloperWorks .
- William Shotts (2013). "27 - Controle de fluxo: ramificando com if". A linha de comando do Linux . Sem Starch Press. pp. 381–390. ISBN 978-1-59327-389-7 . (download grátis)
links externos
- The Single UNIX Specification , Issue 7 from The Open Group - Commands & Utilities Reference,
- Linux Comandos do usuário manual -
- Plano 9 , Volume 1 - Manual do Programador