The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Сравнение переменных"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Сравнение переменных"
Сообщение от Agp emailИскать по авторуВ закладки on 19-Ноя-03, 11:41  (MSK)
Здравствуйте
Подскажите, пожалуста, где грабли?
Имеется текстовый файл (база данных:) - fax.txt (строчек дефисов нет в файле, это я для наглядности.
------------------------------------------------
Agp "+7 (095) 2070095"
------------------------------------------------
и скрипт его с ним работающий
------------------------------------------------
#!/bin/bash
                                                                                
  tel1="+7 (095) 2070095"
  echo "Tel1 $tel1"
cat fax.txt | grep "Agp" | while read -r line
do
        tel2=`echo ${line} | cut -d " " -f2- | sed s/\"//g`
        echo "Tel2 $tel2"
        if [ "$tel1" != "$tel2" ];
        then
                echo "Tel1 $tel1"
                echo "Tel2 $tel2"
                echo "Not"
        else
                echo "Equal"
        fi
done

------------------------------------------------
Запускаю
------------------------------------------------
$ ./t_cut3.sh
Tel1 +7 (095) 2070095
Tel2 +7 (095) 2070095
Tel1 +7 (095) 2070095
Tel2 +7 (095) 2070095
Not
------------------------------------------------
??? Не понятно мне почему ??? Ну ладно меняю 9ю строку с 'if', убираю кавычки
------------------------------------------------
        if [ $tel1 != $tel2 ];
------------------------------------------------
Запускаю
------------------------------------------------
$ ./t_cut3.sh
Tel1 +7 (095) 2070095
Tel2 +7 (095) 2070095
./t_cut3.sh: line 9: [: too many arguments
Equal
------------------------------------------------
??? Работает но с ошибкой ???
Что я нетак пишу?
Заранее спасибо

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Сравнение переменных"
Сообщение от A.Shikoff emailИскать по авторуВ закладки on 19-Ноя-03, 13:08  (MSK)
>Здравствуйте

>            
>    echo "Tel1 $tel1"
>            
>    echo "Tel2 $tel2"
>            

Попробуй посмотреть
echo "${tel2}."
Это к тому, что в конце строки tel2 могут быть пробелы.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Сравнение переменных"
Сообщение от Agp emailИскать по авторуВ закладки on 19-Ноя-03, 13:46  (MSK)
Ура! нашел
пробелов не было, но был символ ^M (перевод каретки)
его блин в редакторе не видно
добавил
sed 's/^M//'
в строку 5 или строку 7 и всё пучком
Спасибо
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Сравнение переменных"
Сообщение от konst emailИскать по авторуВ закладки on 19-Ноя-03, 13:32  (MSK)
>Здравствуйте
>Подскажите, пожалуста, где грабли?
>Имеется текстовый файл (база данных:) - fax.txt (строчек дефисов нет в файле,
>это я для наглядности.
>------------------------------------------------
>Agp "+7 (095) 2070095"
>------------------------------------------------
>и скрипт его с ним работающий
>------------------------------------------------
>#!/bin/bash
>
>  tel1="+7 (095) 2070095"
>  echo "Tel1 $tel1"
>cat fax.txt | grep "Agp" | while read -r line
>do
>        tel2=`echo ${line} | cut
>-d " " -f2- | sed s/\"//g`
>        echo "Tel2 $tel2"
>        if [ "$tel1" !=
>"$tel2" ];
>        then
>            
>    echo "Tel1 $tel1"
>            
>    echo "Tel2 $tel2"
>            
>    echo "Not"
>        else
>            
>    echo "Equal"
>        fi
>done
>
>------------------------------------------------
>Запускаю
>------------------------------------------------
>$ ./t_cut3.sh
>Tel1 +7 (095) 2070095
>Tel2 +7 (095) 2070095
>Tel1 +7 (095) 2070095
>Tel2 +7 (095) 2070095
>Not
>------------------------------------------------
>??? Не понятно мне почему ??? Ну ладно меняю 9ю строку с
>'if', убираю кавычки
>------------------------------------------------
>        if [ $tel1 !=
>$tel2 ];
>------------------------------------------------
>Запускаю
>------------------------------------------------
>$ ./t_cut3.sh
>Tel1 +7 (095) 2070095
>Tel2 +7 (095) 2070095
>./t_cut3.sh: line 9: [: too many arguments
Надо оставить кавычки, т.к. переменные содержат пробелы
>Equal
>------------------------------------------------
>??? Работает но с ошибкой ???
>Что я нетак пишу?
Скорее всего дело в том что файл fax.txt набран в MS и содержит дополнительный символ перевода строки (\r)
Попробуй
tel2=`echo ${line} | cut -d " " -f2- | perl -ne 's/[\"\r]//g;print;'`
>Заранее спасибо


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру