Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Условия в bash. 3 > 20 - истина?  (Прочитано 808 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6844
    • Просмотр профиля
Условия в bash. 3 > 20 - истина?
« : 18 Октября 2013, 07:05:55 »
if [[ $SWITCH_UP > 20 ]]
SWITCH_UP растет от 0 с шагом +1
Условие выполняется когда SWITCH_UP > 2

Как правильно написать условие, чтобы выполнялось когда SWITCH_UP > 20?



Зачем вообще в bash устроили этот дурдом?

Цитировать
Существует специальная команда -- [ (левая квадратная скобка). Она является синонимом команды test, и является встроенной командой (т.е. более эффективной, в смысле производительности). Эта команда воспринимает свои аргументы как выражение сравнения или как файловую проверку и возвращает код завершения в соответствии с результатами проверки (0 -- истина, 1 -- ложь).

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Условия в bash. 3 > 20 - истина?
« Ответ #1 : 18 Октября 2013, 07:11:33 »
if ((SWITCH_UP>20))
Wars ~.o

Оффлайн Сперанский

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4055
  • Dictum ac factum
    • Просмотр профиля
Re: Условия в bash. 3 > 20 - истина?
« Ответ #2 : 18 Октября 2013, 09:15:29 »
if [[ $SWITCH_UP -gt 20 ]]

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Условия в bash. 3 > 20 - истина?
« Ответ #3 : 18 Октября 2013, 09:31:24 »
$ A="10" ; if [ "$A" -gt "5" ] ; then echo "$A" ; fi
10
Так что внимательно читаем
man testи не рисуем двойные скобки там, где они не нужны.

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6844
    • Просмотр профиля
Re: Условия в bash. 3 > 20 - истина?
« Ответ #4 : 18 Октября 2013, 09:38:42 »
ArcFi,
то, что [ - есть команда test понятно, как и то, что 0 - истина в данном случае. Выходит -gt ключ команды test. С этим ясно.

Вопрос по [[
Цитировать
Начиная с версии 2.02, Bash предоставляет в распоряжение программиста конструкцию [[ ... ]] расширенный вариант команды test, которая выполняет сравнение способом более знакомым программистам, пишущим на других языках программирования.

так как все-таки пользоваться этой штукой, для каких случаев, если привычные операции сравнения не канают? Оно привычно только в том смысле, что истиной считается [[ 1 ]], а не [ 0 ]?

Ещё вопрос по кавычкам, зачем значение в кавычки, если мне нужен тип целое число?

A="10"
не равно
A=10
?

Пользователь решил продолжить мысль 18 Октября 2013, 09:41:21:
if ((SWITCH_UP>20))
Мне больше нравится такой вариант, чем использование ключей для test.

Чем он лучше понятно, тем что понятнее. А чем хуже, скорость выполнения мб меньше?
« Последнее редактирование: 18 Октября 2013, 09:41:21 от ⚡ Thunde® ⚡ »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3268
    • Просмотр профиля
Re: Условия в bash. 3 > 20 - истина?
« Ответ #5 : 18 Октября 2013, 18:50:07 »
А зачем двойные скобки? Почему не написать так:
if [ $var -gt 20 ] ; then
...
fi
Пётр.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Условия в bash. 3 > 20 - истина?
« Ответ #6 : 18 Октября 2013, 18:55:57 »
⚡ Thunde® ⚡,
Цитата: man bash
When used with [[, the < and > operators sort lexicographically using the current locale.  The test command sorts using ASCII ordering.

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6844
    • Просмотр профиля
Re: Условия в bash. 3 > 20 - истина?
« Ответ #7 : 18 Октября 2013, 21:08:48 »
ArcFi,
Спасибо :)
А что про двойные кавычки для целочисленного значения?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Условия в bash. 3 > 20 - истина?
« Ответ #8 : 19 Октября 2013, 06:29:27 »
А что про двойные кавычки для целочисленного значения?
Не играет роли.

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6844
    • Просмотр профиля
Re: Условия в bash. 3 > 20 - истина?
« Ответ #9 : 20 Октября 2013, 19:35:45 »
ArcFi,
Благодарю.

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

Топик закрыт.

 

Страница сгенерирована за 0.017 секунд. Запросов: 21.