Здравствуйте
Подскажите, пожалуста, где грабли?
Имеется текстовый файл (база данных:) - 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
------------------------------------------------
??? Работает но с ошибкой ???
Что я нетак пишу?
Заранее спасибо
>Здравствуйте>
> echo "Tel1 $tel1"
>
> echo "Tel2 $tel2"
>Попробуй посмотреть
echo "${tel2}."
Это к тому, что в конце строки tel2 могут быть пробелы.
Ура! нашел
пробелов не было, но был символ ^M (перевод каретки)
его блин в редакторе не видно
добавил
sed 's/^M//'
в строку 5 или строку 7 и всё пучком
Спасибо
>Здравствуйте
>Подскажите, пожалуста, где грабли?
>Имеется текстовый файл (база данных:) - 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;'`
>Заранее спасибо