-gt: erro esperado do operador unário no bash

-4

Eu escrevi este script simples:

i = "1";
b = "4";
if [ "$i"-gt "$b" ]
then
echo ""
fi

Mas recebi este erro ao tentar executá-lo:

[: -gt: unary operator expected

O que é wong?

    
por Mohammad Reza Rezwani 08.08.2014 / 20:00

1 resposta

3

Por favor, forneça listagens completas de erros conforme você pergunta; -)

The program 'i' is currently not installed. You can install it by typing:
sudo apt-get install iprint
b: command not found
bash: [: -gt: unary operator expected

Isso tem apenas diferenças sutis, mas funciona; estudá-lo:

i="1";
b="4";
if [ "$i" -gt "$b" ]
then
  echo "Greater"
else
  echo "NOT Greater"
fi
  1. i = "1" é interpretado pelo bash para ser executado i com os parâmetros = e "1" .
  2. "$i" is não foi definido para nada devido a 1), ou seja, é "" (string nula) - o mesmo com "$b"

Isso faz com que [ "$i"-gt "$b" ] seja lido como [ -gt ] à medida que a interpretação chega a esse ponto. Além disso, observe que, ao corrigir 1), você ainda tem o problema de "sem espaço" entre "$i" e -gt

    
por Hannu 08.08.2014 / 20:05