The OpenNET Project / Index page

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

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

"Linux - в конвейере теряются символы"  +/
Сообщение от xatul (ok) on 04-Фев-13, 22:17 
Скрипт выводит на экран информацию о таблицах БД, примерно так:
+-------+----------------
| Field | Type
+-------+---------------
|

При использовании конвейера или перенаправления вывода символы "+", "-", "|" теряются.
Текстовая часть сохраняется нормально.

Ubuntu 12.04
===========================

Вот фрагмент скрипта:

a='describe '$1               # $1 - имя таблицы
db='uf'                       # - имя базы
a="'"$a"' "$db
a='sudo mysql -h localhost -P 3306 -u root -p<pass> -e '$a
eval $a

запускаем....

$ . desctable.sh xmlsitemap
получаем на экране:

+-------------------+--------------
| Field | Type
+-------------------+----------------
|

$ . desctable.sh xmlsitemap | more (или еще что-нить на конвейер или перенаправление)
получаем:

Field Type
id int(10) unsigned
type varchar(32)

---------------------------
Вариации типа ret=`eval $a` - тот же эффект, плюсики/минусики до $ret не доходят.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Linux - в конвейере теряются символы"  +/
Сообщение от xatul (ok) on 05-Фев-13, 00:19 
:)
решение подсказали на forum.ubuntu.ru:

вот это:
sudo mysql -h localhost -P 3306 -u root -p<pass> -e

дополнить:
sudo mysql -h localhost -P 3306 -u root -p<pass> --table -e

заработало.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Linux - в конвейере теряются символы"  +/
Сообщение от Andrey Mitrofanov on 05-Фев-13, 15:01 
> :)
> решение подсказали на forum.ubuntu.ru:
> sudo mysql -h localhost -P 3306 -u root -p<pass> --table -e

А надо было сразу man mysql читать - на предмет искусственных интеллектов вида тервинал-не терминал на stdout. (Нет, я не: если в man-е нет... Ну, oracle.com не иначе.)

> заработало.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Linux - в конвейере теряются символы"  –1 +/
Сообщение от foxy_ant on 05-Фев-13, 00:32 
> a='describe '$1 # $1 - имя таблицы
> db='uf'         # - имя базы
> a="'"$a"' "$db
> a='sudo mysql -h localhost -P 3306 -u root -p<pass> -e '$a
> eval $a

Здесь "гремучая смесь" с переопределением переменных и eval, которая работает со сложными переменными в два прохода, sudo в теле скрипта лучше избегать, к тому же к БД подключаетесь root'ом (об этом помолчу).

Скрипт desctable.sh:
#!/bin/bash
mysql -h localhost -P 3306 -u <user> -p<pass> -e "DESCRIBE $1 uf"

запускаем:
sudo desctable.sh xmlsitemap | more
здесь намеренно оставил sudo, для примера как sudo использовать вне тела скрипта, но здесь это плохая идея.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Linux - в конвейере теряются символы"  –1 +/
Сообщение от xatul (ok) on 05-Фев-13, 00:59 
> Здесь "гремучая смесь" с переопределением переменных и eval, которая работает со сложными
> переменными в два прохода, sudo в теле скрипта лучше избегать, к
> тому же к БД подключаетесь root'ом (об этом помолчу).
> Скрипт desctable.sh:
> #!/bin/bash
> mysql -h localhost -P 3306 -u <user> -p<pass> -e "DESCRIBE $1 uf"
> запускаем:
> sudo desctable.sh xmlsitemap | more
> здесь намеренно оставил sudo, для примера как sudo использовать вне тела скрипта,
> но здесь это плохая идея.

Умничай там, где сидят идиоты.

Для начала, это -
mysql -h localhost -P 3306 -u <user> -p<pass> -e "DESCRIBE $1 uf"
- фигня.

Должно быть так:
mysql -h localhost -P 3306 -u <user> -p<pass> -e "DESCRIBE $1" uf

Хоть проверяй что постишь.

Для конца - ты проблему не закрыл, даже не смог ее понять.
Я выше уже отписал решение.

А твои советы... Я сёдня весь день с этим трахался, и с root'ом, и с user'ом, с двумя десятками вариантов запроса.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Linux - в конвейере теряются символы"  +1 +/
Сообщение от foxy_ant on 05-Фев-13, 01:04 
> Умничай там, где сидят идиоты.
> mysql -h localhost -P 3306 -u root -p2944135 -e "DESCRIBE $1" uf

Мда...

> Хоть проверяй что постишь.
> Для конца - ты проблему не закрыл, даже не смог ее понять.
> Я выше уже отписал решение.

Извини пожалуйста, удачи.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору
Часть нити удалена модератором

13. "Linux - в конвейере теряются символы"  +/
Сообщение от LSTemp (ok) on 08-Фев-13, 02:52 
>>> Идите на форум Ubuntu.
>> Что касается конкретного юзера foxy_ant, для тех, кто можбыть не понял сути
>> разногласий, но готов трезво воспринять пояснения, могу их дать. Как минимум
>> - совет запускать неотлаженный скрипт размером больше полусотни строк с правами
>> root, я расцениваю как завуалированную попытку порушить сервер, с которым я
>> работаю. Если нужно подробнее - пишите.
> Учитесь отлаживать скрипты.
> Если вы написала гавнокод, а еще жалуйтесь что не работает - ССЗБ.
> Вам четко написали, пересмотреть подходы и логику.
> P.S. Никто не отменял использования тестовой базы.

Его не проймешь. Ему на форуме убунты сказали
"
sudo mysql -h localhost -P 3306 -u root -p<pass> --table -e
"
и у него заработало.

Он рута системы не отличает от мускульного рута. О каких тестовых БД Вы говорите? )

Ответить | Правка | Наверх | Cообщить модератору

14. "Linux - в конвейере теряются символы"  +/
Сообщение от universite email(ok) on 08-Фев-13, 07:24 

> Его не проймешь. Ему на форуме убунты сказали
> "
> sudo mysql -h localhost -P 3306 -u root -p<pass> --table -e
> "
> и у него заработало.
> Он рута системы не отличает от мускульного рута. О каких тестовых БД
> Вы говорите? )

Отлаживать скрипты же на чем-то надо? Или вы на боевой БД рискуете? :)

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

16. "Linux - в конвейере теряются символы"  +/
Сообщение от LSTemp (ok) on 10-Фев-13, 04:48 
>> Его не проймешь. Ему на форуме убунты сказали
>> "
>> sudo mysql -h localhost -P 3306 -u root -p<pass> --table -e
>> "
>> и у него заработало.
>> Он рута системы не отличает от мускульного рута. О каких тестовых БД
>> Вы говорите? )
> Отлаживать скрипты же на чем-то надо? Или вы на боевой БД рискуете?
> :)

Я-то нет.
Но вот товарищ еще зачем-то еще и сам mysql от рута запускает.
Это наводит на определенные мысли, которые я (частично) в своем посте и изложил. Добро если он только БД убьет...


Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

15. "Linux - в конвейере теряются символы"  +/
Сообщение от xatul (ok) on 08-Фев-13, 11:28 
> Он рута системы не отличает от мускульного рута. О каких тестовых БД
> Вы говорите? )

Мдасс... Похоже, вменяемые сюда не заходят. Учту на будущее.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

Архив | Удалить

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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