LINUX.ORG.RU

bash условные операторы


0

1

Не могу разобраться. Вот скажите , как сравнить значение в переменной $sec с числом, почему - то Сишные > < <= >= == не работают, а точнее работают через () но как - то не понятно. Можно пару примерчиков если не сложно.На маны просьба ссылки не давать, облазил кучу

На маны просьба ссылки не давать

ок, напишу без ссылки:
man bash, google abs bash

anonymous
()
Ответ на: комментарий от staseg

Почему-то уверен, что этот ман ты не читал.

staseg ★★★★★
()
Ответ на: комментарий от eringus

да читал я про тест, но что - то не понятно с gt ne и т.д.

А ты читай еще раз. До просветления, как говорится. И Эксперементируй в баше. Все поняли, а ты не можешь?

staseg ★★★★★
()
Ответ на: комментарий от anonymous

greater

Поправлю: Greater Than. Как и lt Less Than - и это прям в мане написано.

staseg ★★★★★
()

и все же $ man bash

Не путай двойный скобки с одинарными. И про пробелы не забывай.

soomrack ★★★★
()

запомни деточка, в bash'е есть только один тип - строка символов. Что-бы использовать другие типы - необходимо использовать специальные костыли, например if (( var1 < var2 )); then ...; fi

drBatty ★★
()
[ megabaks@desktop ] ~ $ sec='1'
[ megabaks@desktop ] ~ $ [[ "$sec" > "10" ]] && echo true || echo false
false
[ megabaks@desktop ] ~ $ sec='100'
[ megabaks@desktop ] ~ $ [[ "$sec" > "10" ]] && echo true || echo false
true
[ megabaks@desktop ] ~ $

но это криво.
примеры:

[ megabaks@desktop ] ~ $ sec='-3'
[ megabaks@desktop ] ~ $ [[ "$sec" > "-2" ]] && echo true || echo false
true
[ megabaks@desktop ] ~ $
[ megabaks@desktop ] ~ $ sec='-1'
[ megabaks@desktop ] ~ $ [[ "$sec" > "1" ]] && echo true || echo false
true
[ megabaks@desktop ] ~ $
потому лучше так
[ megabaks@desktop ] ~ $ sec='-3'
[ megabaks@desktop ] ~ $ (( "$sec" > "-2" )) && echo true || echo false
false
[ megabaks@desktop ] ~ $
но это же гуглится...вроде, не?

megabaks ★★★★
()
Ответ на: комментарий от megabaks

спасибо , но уже поздно, всем вышепишущим людям видимо было сложно дать пару примеров, проблема была в том, что когда я делал

if [ $sec -eq 10 ]
  then
   bla bla bla
fi 
я вечно получал ошибку . Оказалось вся проблема была в том что переменная была пуста, либо не объявлена

eringus
() автор топика
Ответ на: комментарий от eringus

eringus

я вечно получал ошибку . Оказалось вся проблема была в том что переменная была пуста, либо не объявлена

используй «двойные кавычки».

drBatty ★★
()
Ответ на: комментарий от eringus

Моя догадка подтвердилась.

Я знаю почему такие мутанты как ты не пишут на С... Потому что на ХелоВорде сегфолт ловят.

Jetty ★★★★★
()
Ответ на: комментарий от megabaks

но это криво

потому, что это текстовое сравнение. арифметическое будет ч-з -gt

кроме того, во всех твоих примерах излишние двойные кавычки; что подтверждает твою ламернутость и «не курение матчасти»

anonymous
()
Ответ на: комментарий от eringus

а, я заглядывая в код часто стал задумываться, какие мутанты писали. вот теперь понятно

anonymous
()
Ответ на: комментарий от anonymous

говорит какой - нибудь школьник, который в 10 классе изучает pascal

eringus
() автор топика

Че-то жестко накинулись на нуба.

power
()
Ответ на: комментарий от eringus

да читал я про тест, но что - то не понятно с gt ne и т.д.

вот и выросло поколение, не видевшее Фортрана

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.