LINUX.ORG.RU

Сравнение чисел/версий в sh/bash

 , , , ,


0

2
$ [ "1" < "2" ] && echo 0 || exit 1
0

подскажите, через какую программу можно произвести сравнение чисел в sh?

Хотелось бы что бы еще даже такое производилось: «1» < «1a» , «2.2» < «2.3» , «3» == «3» и т.д.

★★★★★

Последнее исправление: NK (всего исправлений: 1)
Ответ на: комментарий от akk

Да ему папка на день рождения акк подогнал, чоты

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

man test

[ это и есть алиас для test. По сабжу - в зависимости от сложности задачи и религиозных воззрений скриптописателя, можно использовать однострочники на perl или обрабатывать числа до приемлемого в test вида при помощи sed и прочих приблуд.

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

[ это и есть алиас для test.

Так по-этому он и сказал что ТСу следует посмотреть документацию чтоб решить его задачу. Если ман не понятен - можно почитать еще https://www.opennet.ru/docs/RUS/bash_scripting_guide/x2565.html

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

Так по-этому он и сказал что ТСу следует посмотреть документацию чтоб решить его задачу.

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

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

Что-то не похоже

alozovskoy@dins:~$ [ "1" -gt "2" ] && echo true || echo false
false
alozovskoy@dins:~$ [ "3" -gt "2" ] && echo true || echo false
true
alozovskoy@dins:~$ [ "100500" -gt "2" ] && echo true || echo false
true
alozovskoy@dins:~$ [ "100500" -gt "100501" ] && echo true || echo false
false
alozovskoy ★★★★★
()
Ответ на: комментарий от alozovskoy

Что-то не похоже

Хм я тогда запутался. Возможно ТС'у следовало бы задать вопрос в виде «подскажите, как научиться пользоваться программой», или что-то вроде того. Но по идее, если он взялся на написание баш-скриптов, он уже должен это уметь. Я даже не очень сперва понял, что делает редирект в том операторе. Расскажите ему кто-нибудь, чем в баше отличается редирект от (( )).

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

Какой редирект? < или && ||? А двойные круглые скобки это аналог let, так что я не совсем понял что ты имеешь ввиду.

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

Какой редирект?

<

А двойные круглые скобки это аналог let, так что я не совсем понял что ты имеешь ввиду.

В них < не редирект.

if ((1 < 2)); then echo less; fi

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

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

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

у меня 4 и что? нуб-нубом в линуксе

Это не повод для гордости. Меньше флудить надо в толксах.

ты

Не надо тыкать незнакомым людям. Я с вами на брудершафт не пил.

три пока нафлудил, и ничего) близок к успеху

Тысяча с небольшим комментариев за 6 лет. Ну просто охрененнная скорость флуда.

И потом, если я чего-то не знаю, я не бегу спрашивать это на ЛОР, а пытаюсь выяснить это в более других местах.

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

Это не повод для гордости.

Нет, повод. На этом сайте. Здесь специально культивируется способность обладать максимумом звёздочек при минимуме смысла.

Не надо тыкать незнакомым людям.

Не вижу причин, по которым в отношении одной персоны следует применять обрашение во множественном числе. Особенно в инете. Лично я кроме «ты» всегда использую «אַתָּה» или «אַתְּ». Ну иногда ещё «you» и прочие. Но никак не во множественном числе. Кроме конечно исторически сложившихся словосочетаний, как например мы говорим «бегемот» - во множественном числе, когда в единственном это будет «бегема».

Я с вами на брудершафт не пил.

так давай выпьём, с нами со всеми. Почему бы и нет?

И потом, если я чего-то не знаю, я не бегу спрашивать это на ЛОР, а пытаюсь выяснить это в более других местах.

А на ЛОР ты ходишь оффтопить, а также проявлять недовольство посетителями, разговаривать с ними грубо и заносчиво. Я понял это по твоим сообщениям в этом обсуждении. И я не думаю, что твоё поведение лучше, чем у вопрошающих.

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

я в общем) обобщил так сказать, я все равно знаю мало

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

То есть ЛОР это не сайт в инете где надо что-то спрашивать и искать? А я думал кто ищет тот находит и неважно где, и спрашивать у более опытных не зазорно, и не важно на каком сайте в инете это делать, или ЛОР для илиты - тут спрашивать не принято?

mul4 ★★★★★
()

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

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

Если нужна хоть сколько-нибудь сложная логика, то бери питон и не выдумывай. Если на скорую руку полопатить строки, и уложишься меньше, чем в 10 строк, то бери перл.

Тебе что в итоге получить надо?

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

какой инструмент, программу, можете посоветовать по своему опыту

Баш.

где подводные камни могут быть

Нигде.

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

если bash, то [ $((4<2)) = 1 ] && echo 1

«Если (d)ash», вы хотели сказать?

Zmicier ★★★★★
()

Хотелось бы что бы еще даже такое производилось: «1» < «1a» , «2.2» < «2.3»

А это называется сравнением версий (version comparison). Далеко не вам первому такая задача понадобилась.

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

Тебе что в итоге получить надо?

да в каталоге файлы, скрипты, пакеты лежат, которые названы: Имя-Версия , просто нужно что бы в каталог скрипт заходил, прогонял файлы на версии и сравнивал, старые перемещал деревом выше , а самый последний по версии не трогал ... как-то так

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

Спасибо, мм, надо же так подумал, а не проще ли будет ls -lr сделать, а потом sed'ом (+awk для колонки), верхний удалить файл и в for загнать перемещение?.. Кто, что думает?

NK ★★★★★
() автор топика

Сравнение чисел:

$ echo "2<1" | bc

Сравнение версий:

$ echo "2.2\n2.2a" | sort | tail -n 1

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