URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2303
[ Назад ]

Исходное сообщение
"Сравнение переменных"

Отправлено Agp , 19-Ноя-03 11:41 
Здравствуйте
Подскажите, пожалуста, где грабли?
Имеется текстовый файл (база данных:) - 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
------------------------------------------------
??? Работает но с ошибкой ???
Что я нетак пишу?
Заранее спасибо


Содержание

Сообщения в этом обсуждении
"Сравнение переменных"
Отправлено A.Shikoff , 19-Ноя-03 13:08 
>Здравствуйте

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

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


"Сравнение переменных"
Отправлено Agp , 19-Ноя-03 13:46 
Ура! нашел
пробелов не было, но был символ ^M (перевод каретки)
его блин в редакторе не видно
добавил
sed 's/^M//'
в строку 5 или строку 7 и всё пучком
Спасибо

"Сравнение переменных"
Отправлено konst , 19-Ноя-03 13:32 
>Здравствуйте
>Подскажите, пожалуста, где грабли?
>Имеется текстовый файл (база данных:) - 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;'`
>Заранее спасибо