LINUX.ORG.RU
ФорумAdmin

if в сравнение в bash

 , ,


0

5

Привет, Всем. Подскажите почему у меня сравнение не работает если я использую " < > "

Вот так работает

if [[ $FILE_SIZ_LOG -gt 10240 ]]; then
# больше
else
# меньше
fi
А так не хочет
if [[ $FILE_SIZ_LOG > 10240 ]]; then
# больше
else
# меньше
fi


man bash, раздел CONDITIONAL EXPRESSIONS:

When used with [[, the < and > operators sort lexicographically using the current locale.

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

Задай этот вопрос своему сердцу, брат

zolden ★★★★★
()

Команда [ - это не что иное, как алиас к команде test, они делают тоже самое. Эти скобочки просто для красоты. Если ты понимаешь, что [ - это не такой синтаксис, а отдельная программа, вызывающаяся из bash, то такие вопросы у тебя отпадут автоматически.
Ну и да

man test

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

По слову alias по твоей ссылке ничего не находится...
В кубунте это два разных бинарника...

Вот так вот практики в очередной раз воздоминировали над кукаретиками, стой обтекай теперь

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

В макоси так до сих пор точно. Ещё год назад много где симлинком было, но суть от этого не меняется, при любых раскладах это одно и то же, хоть и бинарники разные.

root@balancer1 ~ # lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04.2 LTS
Release:	14.04
Codename:	trusty
root@balancer1 ~ # /usr/bin/[ --help
Usage: test EXPRESSION
  or:  test
  or:  [ EXPRESSION ]
  or:  [ ]
  or:  [ OPTION
...
В любом случае суть в том, что [ - это программа, а не синтаксис, наважно, симлинк это, или отдельный бинарник.

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

Мсье стоит подучить английский или глаза разуть.

NOTE: [ honors the --help and --version options, but test does not.

Не алиас, но разницы особой нет.

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

Не алиас

Похвально умение признавать свои ошибки.
К вам вопросов больше нет, спасибо

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

В кубунте это два разных бинарника...

Кстати, да. Но почему они разные? В т.ч. по размеру. Оба принадлежат (у меня) одному и тому же пакету coreutils.

$ ls  /usr/bin/test -l
-rwxr-xr-x 1 root root 34420 дек 27  2013 /usr/bin/test
$ ls  /usr/bin/[ -l
-rwxr-xr-x 1 root root 38516 дек 27  2013 /usr/bin/[
$ equery belongs /usr/bin/[
 * Searching for /usr/bin/[ ... 
sys-apps/coreutils-8.21 (/usr/bin/[)
$ equery belongs /usr/bin/test
 * Searching for /usr/bin/test ... 
sys-apps/coreutils-8.21 (/usr/bin/test)
Интересно, в чем разница.

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

Команда [ - это не что иное, как алиас к команде test, они делают тоже самое. Эти скобочки просто для красоты. Если ты понимаешь, что [ - это не такой синтаксис

У ТС - `[[ ]]'. Это «такой синтаксис», да.

ТС'у надо использовать

if (( FILE_SIZ_LOG > 10240 )); then
    true
else
    false
fi

nbw ★★★
()
Последнее исправление: nbw (всего исправлений: 2)
Ответ на: комментарий от zolden

Баш давно мёртв, используй zsh он более юзерфрендли, в том числе в этом аспекте

В скриптинге (для linux-систем) следует использовать sh. Ну или bash, если sh кажется слишком бедным. Причины очевидны, м?

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

Причины очевидны, м?

Нет, но я надеюсь ты сейчас нормально отожгёшь, а то мне не нравится людей кукаретиками называть, это невежливо

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

Да, хамить невежливо. Слово «переносимость» слышал когда-нибудь? bash идёт везде в штатной поставке (речь о дистрибутивах GNU/Linux), а zsh надо ставить отдельно. Если у тебя #!/usr/bin/env zsh, то скрипт, скопированный на соседний сервер, просто не запустится. А поставить любимый zsh там может и прав не хватить, например.

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

+ скрипт, написанный тобой, возможно, будет править другой человек, а с особенностями синтаксиса zsh знакомо значительно меньше людей, чем с bash. Смысла же использовать для написания скриптов zsh в режиме совместимости с bash не вижу никакого. Разве что из идолопоклоннических соображений.

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

Слово «переносимость» слышал когда-нибудь?

Предсказуемо...и слабовато...да... Больше точно ничего нет в запасе?

Ок
1) сколько раз ты с жизни слышал фразу «Джон, завтра мы переводим нашу АЭС с QNX на AIX, Бога ради, убедись, что твои скрипты там заработают, судьба целого города в твоих руках»
2) Сколько твоих скриптов вышли за пределы локалхоста? Сколько вышли в дикий мир (т.е. в неизвестную заранее среду)?
3) У тебя в гараже стоит «Феррари» и «Запорожец». Ты в любом случае поедешь на «Запорожце» («а вдруг я заеду в говна, где феррари не проедет»), или ты понимаешь что серебряных пуль не бывает, и для каждой задачи хорош свой инструмент?

Пожалуйста, ответь цифрами и «да/нет»
Спасибо

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

2) Сколько твоих скриптов вышли за пределы локалхоста? Сколько вышли в дикий мир (т.е. в неизвестную заранее среду)?

Больше пары десятков (размерами от 100 строк и до 10000), точно не считал.

А твоих?

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

О, ты опять решил к нас присоединиться. Это радует.
Расскажешь, как отражается на здоровье написание скрипта на sh в 10000 строк?

Раз уж ты проявил участие, то отвечу - в дикий мир ни одного моего скрипта не вышло.

zolden ★★★★★
()
Ответ на: комментарий от zolden
1) 0. Кстати, причём тут куныхи и аыхи? Я два раза написал, что речь идёт о GNU/Linux.
2) ~100/0. И что? Пишу для своих целей, много, и с удовольствием.
3) Аналогия кривовата. Понятно, что ты сопоставил «феррари/запорожец» и «zsh/bash», но проходимость «Запорожца» вызывает сомнения.

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

Отлично понимаю. Для скриптов под линь хорош bash, для интерактивной работы - zsh вне конкуренции. А вот ты, по-видимому, не очень хорошо это понимаешь, раз на вопрос ТС «как сделать <так> имеющимся инструментом» начал советовать сменить инструмент.

nbw ★★★
()
Последнее исправление: nbw (всего исправлений: 2)
Ответ на: комментарий от zolden

сколько раз ты с жизни слышал фразу «Джон, завтра мы переводим нашу АЭС с QNX на AIX

Не раз. На прошлой работе приходилось получать по рукам за башизмы в sh-скриптах «ЁТМ, это же на бизибоксе потом не запустишь».

Сколько твоих скриптов вышли за пределы локалхоста?

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

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Подскажите почему у меня сравнение не работает если я использую " < > "

в bash числа надо сравнивать так:

if (( FILE_SIZE_LOG > 10240 ))

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

лепится. К слову «жопа».

Ну теперь вы будете в курсе.

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

А вы админ локалхоста? Точно знающий, какой шелл нужен, а какой нет? Какая прелесть

Кукаретики лора схлынули, оставив за собой лишь фантазёров лора.
Прям как я люблю

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