> [ -f = -a -a -a ]
bash: [: argument expected
> [ -f = -a -a x ]
Mas:
[ x-f = x-a -a -a ]
não funciona, embora
[ -a ]
está bem.
Eu me deparei com essa construção para testar se a variável de shell $foo
, que poderia conter qualquer string arbitrária, correspondia a foo
:
[ "x$foo" = "xfoo" ]
O objetivo de prefixar com x
nunca foi explicado. Isso parece uma tentativa de evitar erros que podem surgir quando $foo
contém strings especiais para testar como =
, -f
, (
ou !
. O manual de informações do GNU indica que expressões compostas envolvendo -a
e -o
podem levar a ambigüidade, então estou principalmente interessado em instruções simples (ou seja, não compostas). Eu tive dificuldade em procurar mais informações sobre isso. Eu não fui capaz de inventar um exemplo de uma string arbitrária que fez com que o GNU test
falhasse de uma maneira inesperada, embora eu admita que não sou tão inteligente assim.
Minhas perguntas:
test
? test
dê resultados incomuns? Eu uso principalmente ferramentas GNU no linux, mas por uma questão de portabilidade, estou interessado em saber se test
também está em outras plataformas.
> [ -f = -a -a -a ]
bash: [: argument expected
> [ -f = -a -a x ]
Mas:
[ x-f = x-a -a -a ]
não funciona, embora
[ -a ]
está bem.