Sempre fico surpreso que na pasta /binexista um [programa.
É assim que se chama quando estamos fazendo algo como if [ something ]:?
Ao chamar o [programa explicitamente em um shell, ele solicita uma correspondência ]e, quando eu forneço o colchete de fechamento, ele parece não fazer nada, não importa o que eu insira entre os colchetes.
Desnecessário dizer que a maneira usual de obter ajuda sobre um programa não funciona, ou seja, man [nem [ --helpfunciona.
man '['funciona bem para mim - ou você esqueceu de citar [ou tem uma definição diferente de "funciona".
[avalia seus argumentos, portanto, você precisa ter espaços entre todos eles. [ a=b ]não é uma comparação: sempre será verdadeira (é uma única sequência: "a = b", que é sempre avaliada como verdadeira ) E você deve limitar o número de argumentos a 4 (mesmo que implementações recentes permitam mais .. por exemplo, limita a 4, por exemplo: [ "a" = "b" ]já possui 4 argumentos: "a" "=" "b" e o final desnecessário do teste arg: "]"). Se você precisar de mais: testes em cadeia com, por exemplo:if [ "$Var_a" = "foo" ] && [ "$Var_b" = "bar" ] ; then : do something ; fi
!por si só (sem escape e sem aspas) não será substituído, e melhor ainda if ! [ .... Todas as expansões festança que usam !incluir pelo menos em outro personagem
[-builtin bash(e possivelmente outros reservatórios), e que isso pode ser usado em vez de /bin/[. Também existe o testcomando-, que em muitos sistemas é um link simbólico para /bin/[(ou vice-versa) - mas em outros é um comando separado.
[refere-se aotestcomando, porém, nãoexpr, assim que deve serman test