O que significa o operador '-gt' nos scripts de shell? [duplicado]

5

Olá, tenho esta frase e quero saber o que significa por favor.

if [[ -z "$1" ]]; then   #  --> this is if the value of the parameter $1 is zero
    PASO=1
elif [[ "$1" -gt 1 ]] ; then  # but i don't know what this flags mean? .."-gt"
    LOG "[$(date +%T)] Parametros incorrectos"
    exit 255
else
    PASO=$1
fi

O que significa -gt ?

    
por Sergio 29.05.2018 / 15:19

3 respostas

12
$ help test
test: test [expr]
    Evaluate conditional expression.
...
      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,
                     -lt, -le, -gt, or -ge.

    Arithmetic binary operators return true if ARG1 is equal, not-equal,
    less-than, less-than-or-equal, greater-than, or greater-than-or-equal
    than ARG2.
    
por 29.05.2018 / 16:06
9

-gt significa "maior que". É usado para comparar inteiros para a desigualdade que geralmente é escrita > em outras linguagens (em alguns shells, com a test utility ou dentro de [ ... ] , > compara duas strings para ordenação lexicográfica, então ele tem um significado muito diferente de -gt ).

-gt está documentado no manual para test ou [ , ou no manual do seu shell se esses forem utilitários integrados, como

n1 -gt n2

True if the integer n1 is algebraically greater than the integer n2; otherwise, false.

(o texto acima foi tirado de o texto padrão POSIX sobre o utilitário test )

O Fortran também usa essa abreviação em seu operador relacional .GT. para números.

Os outros operadores relevantes para comparar inteiros no shell com test ou em [ ... ] são -ge ("maior que ou igual"), -lt ("menor que"), -le ("menor que ou igual"), -eq ("igual") e -ne ("diferente").

Curiosamente, todos destes são os mesmos em Fortran ( .GT. , .GE. , .LT. , .LE. , .EQ. e .NE. ).

    
por 29.05.2018 / 16:21
3

Você pode começar com help test , que exibirá a ajuda do subconjunto POSIX da sintaxe suportada pelo operador [[ .

Uma documentação abrangente está na seção CONDITIONAL EXPRESSIONS de man bash .

Especificamente:

Other operators:
  ...
  arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,
                 -lt, -le, -gt, or -ge.

Arithmetic binary operators return true if ARG1 is equal, not-equal,
less-than, less-than-or-equal, greater-than, or greater-than-or-equal
than ARG2.
    
por 29.05.2018 / 15:30