
Привет, у меня есть это предложение, и я хочу узнать, что оно означает.
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
Что -gt
значит?
решение1
-gt
означает «больше чем». Он используется для сравнения целых чисел для неравенства, которое обычно записывается >
в других языках (в некоторых оболочках, с помощью test
утилиты или внутри [ ... ]
, >
сравнивает две строки для лексикографического упорядочивания, поэтому имеет совсем другое значение, чем -gt
).
-gt
документировано в руководстве для test
или [
, или в руководстве вашей оболочки, если это встроенные утилиты, как
n1 -gt n2
Истина, если целое число
n1
алгебраически больше целого числаn2
; в противном случае — ложь.
(вышеизложенное взято изстандартный текст POSIX об test
утилите)
Fortran также использует эту аббревиатуру в своем .GT.
реляционном операторе для чисел.
Другими соответствующими операторами для сравнения целых чисел в оболочке с test
или в [ ... ]
являются -ge
(«больше или равно»), -lt
(«меньше»), -le
(«меньше или равно»), -eq
(«равно») и -ne
(«не равно»).
Интересно,всеиз них одинаковы в Фортране ( .GT.
, .GE.
, .LT.
, .LE.
, .EQ.
и .NE.
).
решение2
$ 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.
решение3
Вы можете начать с help test
, что отобразит справку по подмножеству синтаксиса POSIX, поддерживаемому оператором [[
.
Подробная документация находится в CONDITIONAL EXPRESSIONS
разделе man bash
.
Конкретно:
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.