привет я новичок в программировании bash, и я читал код, но я не мог понять одну вещь. что делает -GT означает в этом кодечто означает «-gt» оператор в программировании bash
if [ $result -gt 0 ] ;
then
exit 1 ;
fi
привет я новичок в программировании bash, и я читал код, но я не мог понять одну вещь. что делает -GT означает в этом кодечто означает «-gt» оператор в программировании bash
if [ $result -gt 0 ] ;
then
exit 1 ;
fi
Это арифметический тест. help test
говорит:
arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,
-lt, -le, -gt, or -ge.
-gt
больше.
В вашем примере условие истинно, если переменная result
больше нуля.
Это означает:
greater than
Или
>
За исключением того, что '>' отличается от '-gt'. В 'test' /' ['command,'> '- оператор большего размера для строк; '-gt' для целых чисел. И, конечно же, в большинстве других контекстов '>' предназначен для перенаправления вывода. –
-gt
означает "больше, чем"
Итак, if [ $result -gt 0 ]
означает "если $ результат больше 0."
Это компаратор «Великий Чем» для целых переменных. Таким образом, код преобразуется в это в псевдокоде: if ($ result> 0) ...
Это хорошая ссылка для компараторов Bash. Самое главное о них вспоминание, которые используются для строк и которые для целых чисел:
http://www.pyeung.com/pages/unix/linux/bashcomparisonoperators.html
В BASH, нет типа переменных, как вы бы найти в C или Java.
Представьте себе, если у меня есть следующие псевдо-программы:
foo = 23
bar = 149
if ($foo > $bar) then
say "Foo is bigger than bar"
elseif ($bar > $foo) then
say "Bar is greater than foo"
else
say "Bar and foo must be equal"
endif
Что следует эта программа делать?
Ну, это зависит от того, если foo и бар - это строки или цифры. Если Foo и бар являются Inventory идентификаторы, которые просто случаются, не содержат ничего, кроме цифр, я, наверное, хочу сказать, что бар меньше Foo потому что (если вы делаете сравнение строка) «» является менее "".
Однако, если Foo и бар числовые, я хотел бы сказать, что бар больше обув, потому что 23 численно меньше 149.
Единственный способ для BASH знать, должен ли я выполните числовое или строковое сравнение числа, чтобы иметь два отдельных логических оператора для строк и чисел.
Например: Foo и бар номера, я буду использовать числовые сравнения:
foo=23
bar=149
if [[ $foo -gt $bar ]]
then
echo "Foo is greater than bar."
elif [[ $bar -gt $foo ]]
echo "Bar is greater than foo."
else
echo "Bar and foo are equal."
fi
И я получу результаты:
Bar is greater than foo.
Если Foo и бар строки, Я буду использовать сравнение строк:
foo=23
bar=149
if [[ $foo > $bar ]]
then
echo "Foo is greater than bar."
elif [[ $bar > $foo ]]
echo "Bar is greater than foo."
else
echo "Bar and foo are equal."
fi
И я получаю:
Foo is greater than bar.
Посмотрите на manpage для BASH под CONDITIONAL EXPRESSIONS, чтобы увидеть все булевы выражения для обеих строк и числовых значений.
Вы узнали о команде 'man'? 'man command' даст вам страницу с информацией о' command'. – Kevin
@Kevin Для 'bash',' help' более полезен. Для этого конкретного примера 'help test' будет _help_! – devnull
@Kevin Но '-gt' не команда, поэтому даже если бы он выглядел, он ничего не нашел. 'man [' правильно искать, но не так очевидно, что неясный RTFM - хороший ответ. – amalloy