2014-02-14 4 views
1

привет я новичок в программировании bash, и я читал код, но я не мог понять одну вещь. что делает -GT означает в этом кодечто означает «-gt» оператор в программировании bash

if [ $result -gt 0 ] ; 
    then 
     exit 1 ; 
    fi 
+1

Вы узнали о команде 'man'? 'man command' даст вам страницу с информацией о' command'. – Kevin

+0

@Kevin Для 'bash',' help' более полезен. Для этого конкретного примера 'help test' будет _help_! – devnull

+2

@Kevin Но '-gt' не команда, поэтому даже если бы он выглядел, он ничего не нашел. 'man [' правильно искать, но не так очевидно, что неясный RTFM - хороший ответ. – amalloy

ответ

4

Это арифметический тест. help test говорит:

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

-gt больше.

В вашем примере условие истинно, если переменная result больше нуля.

0

Это означает:

greater than 

Или

> 
+0

За исключением того, что '>' отличается от '-gt'. В 'test' /' ['command,'> '- оператор большего размера для строк; '-gt' для целых чисел. И, конечно же, в большинстве других контекстов '>' предназначен для перенаправления вывода. –

0

-gt означает "больше, чем"

Итак, if [ $result -gt 0 ] означает "если $ результат больше 0."

0

Это компаратор «Великий Чем» для целых переменных. Таким образом, код преобразуется в это в псевдокоде: if ($ result> 0) ...

Это хорошая ссылка для компараторов Bash. Самое главное о них вспоминание, которые используются для строк и которые для целых чисел:

http://www.pyeung.com/pages/unix/linux/bashcomparisonoperators.html

1

В 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, чтобы увидеть все булевы выражения для обеих строк и числовых значений.

Смежные вопросы