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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: BASH не хочет нормально сравнивать строки  (Прочитано 1104 раз)

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

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Хочу сравнить вывод команды с эталоном

#!/bin/bash
COMMAND="There is no screen to be attached."
OK="`screen -x`"
if [ "$COMMAND" == "$OK" ]
then
        echo "совпадение"
else
        echo "нет сопадения"
fi
exit 0

должно быть совпадение, а мне пишет нет сопадения

почему так!?  :o

заранее спасибо
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #1 : 11 Августа 2012, 21:46:58 »
screen -x | hex0x00000000: 54 68 65 72 65 20 69 73 - 20 6e 6f 20 73 63 72 65 There is no scre
0x00000010: 65 6e 20 74 6f 20 62 65 - 20 61 74 74 61 63 68 65 en to be attache
0x00000020: 64 2e 0d 0a             -                         d.MJ
Wars ~.o

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #2 : 11 Августа 2012, 22:27:58 »
окей, а как сравнить то?
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #3 : 11 Августа 2012, 22:40:07 »
screen -x | tr -d '\r\n' | hex
Wars ~.o

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #4 : 11 Августа 2012, 23:16:08 »
и так со всеми командами? если я их на эталон сравниваю?
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #5 : 11 Августа 2012, 23:45:03 »
OK="`screen -x | tr -d '\r\n'`"
Wars ~.o

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #6 : 11 Августа 2012, 23:51:26 »
я понял, спасибо большое, так это выражение лучше всегда использовать? Не только с конкретным screen -x ?
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #7 : 12 Августа 2012, 00:00:11 »
L~$ [ "`echo -e \"OK\"`" == "OK" ] && echo yes || echo not
yes
L~$ [ "`echo -e \"OK\n\"`" == "OK" ] && echo yes || echo not
yes
L~$ [ "`echo -e \"OK\r\n\"`" == "OK" ] && echo yes || echo not
not
Wars ~.o

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #8 : 12 Августа 2012, 00:54:53 »
victor00000,
без обид, но если тебе быстрее накатать это, чем ответить ДА, то ты передела за компом  :D ;)
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #9 : 12 Августа 2012, 01:03:54 »
L~$ [ "`echo -e \"OK\r\n\"`" == "OK" ] && echo yes || echo not
not
это ты пост 1. )))
Wars ~.o

Оффлайн astrobeglec

  • Активист
  • *
  • Сообщений: 838
  • Самая тяжелая ноша - пророк в извращенном мире...
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #10 : 12 Августа 2012, 02:14:11 »
victor00000,
без обид, но если тебе быстрее накатать это, чем ответить ДА, то ты передела за компом  :D ;)
L~$ [ "`echo -e \"OK\r\n\"`" == "OK" ] && echo yes || echo not
not
это ты пост 1. )))
Оба правы. Вариант Zeka13 нагляден при разборе скрипта, а victor00000 просто вложил все в строку, которую не каждый кстати поймет. Зато коротко.

Пользователь решил продолжить мысль 12 Августа 2012, 02:18:24:
кстати большое спасибо за урок с hex
« Последнее редактирование: 12 Августа 2012, 02:18:24 от astrobeglec »
Я вернулся...

Оффлайн Zeka13

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: BASH не хочет нормально сравнивать строки
« Ответ #11 : 12 Августа 2012, 03:40:45 »
PS забавно, что screen -x если не выдаёт "There is no screen to be attached.", то ты заходишь на этот самый screen, но мне это и наруку  :coolsmiley:

PS кому нет, есть screen -ls
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

 

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