What does the operator `-gt` in shell scripts mean?

$ 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.

-gt means "greater than". It is used to compare integers for the inequality that is usually written > in other languages (in some shells, with the test utility or inside [ ... ], > compares two strings for lexicographical ordering, so it has a very different meaning from -gt).

-gt is documented in the manual for test or [, or in your shell's manual if these are built-in utilities, as

n1 -gt n2

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

(the above is taken from the POSIX standard text about the test utility)

Fortran also uses this abbreviation in its .GT. relational operator for numbers.

The other relevant operators for comparing integers in the shell with test or in [ ... ] are -ge ("greater-than or equal"), -lt ("less-than"), -le ("less-than or equal"), -eq ("equal") and -ne ("not equal").

Interestingly, all of these are the same in Fortran (.GT., .GE., .LT., .LE., .EQ. and .NE.).


You can start with help test, which will display the help of the POSIX subset of the syntax supported by the [[ operator.

A comprehensive documentation is in the CONDITIONAL EXPRESSIONS section of man bash.

Specifically:

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.