Os interessantes binários dos sistemas Unix
- Em sistemas Unix, existem binários cujo nome é um único símbolo.
- Ao executar o comando
/bin/[, é possível verificar a existência de um programa chamado[. [etestapontam para o mesmo binário, e os dois comandos na prática executam a mesma função.
Uso do programa test e de [
- O programa
testé usado para avaliar expressões no shell. - Ele é usado para comparação de strings, comparação de números, verificação de condições de arquivos etc.
testrecebe argumentos, avalia a expressão e retorna 0 se for verdadeira e 1 se for falsa.
Motivo da existência dos dois comandos
- O motivo de existirem os dois comandos,
teste[, não é claro, mas supõe-se que seja para melhorar a legibilidade. - Ao usar o comando
[, é possível expressar condicionais de forma mais limpa do que comtest. - Ao usar
[, o último argumento do comando deve terminar com].
Diferença entre comandos embutidos e binários externos
- Como
teste[são usados com frequência em scripts shell, eles são implementados como comandos embutidos na maioria dos shells. - O uso de comandos embutidos e de binários externos pode apresentar comportamentos diferentes, e também podem surgir diferenças conforme o shell.
Uso de [[ e suas diferenças
[[é uma extensão do Bash que substitui o uso de[.- Como comando embutido,
[[pode alterar regras básicas da linguagem dentro da expressão. [[pode tratar padrões glob como literais em comparações de strings, produzindo resultados diferentes.
Escolha ao escrever scripts shell
- Ao escrever scripts shell portáveis, é melhor usar
[. - Se você estiver escrevendo scripts exclusivos para Bash, usar
[[oferece mais funcionalidades.
Combinação de expressões do shell com expressões test
- O shell tem suas próprias expressões por meio dos operadores
!,&&e||. - É possível combinar expressões
teste expressões do shell em um único comando.
Opinião do GN⁺
O ponto mais importante deste texto é que, em sistemas Unix, [ e test existem como dois comandos diferentes que executam a mesma função, e supõe-se que isso sirva para melhorar a legibilidade e a eficiência dos scripts shell. Essas informações podem ser úteis para engenheiros de software iniciantes ao escrever ou entender scripts shell, além de ajudarem a compreender o funcionamento dos scripts shell e as diferenças entre vários shells. O que torna este texto interessante é que ele mostra como ferramentas básicas de scripts shell podem ser usadas de várias formas e evidencia bem a complexidade e a flexibilidade da programação em shell.
1 comentários
Comentários no Hacker News
Agradecimento do autor original e sugestão de ajuste no título
História do comando "test" no shell Bourne e preferência pessoal
Exemplo de condicional sem usar bloco
ifComo combinar bloco
ifcom comandos comunsReflexão sobre usar operadores lógicos dentro do comando
testVantagens de usar o comando "test" e a conveniência de "man test"
Atenção ao comportamento de argumento único em
[etestDiferença entre
/bin/[e/bin/testno Linux e no NetBSDCompartilhamento de links para uma exploração mais profunda de
test/[/[[e das esquisitices do shellObservação de que
[[é exclusivo do bash e recomendação de usá-lo se o uso de bash for certoConfusão sobre a percepção de que
[não faz parte da linguagem de script do bashOpinião forte sobre shell e oposição ao uso de
[