LINUX.ORG.RU

глупый вопрос про bash


0

0

mysql bd -e "$query"

выводит в красивой такой табличке с хорошим форматированием, а вот если

rez=`mysql bd -e "$query"`

echo $rez все ломается ... как такое решить?

вообще цель всего вклинится в эту табличку и дописать свои строки

спасибо

★★★

Ответ на: комментарий от fura13

Во первых, echo "$rez" --- таблицу ломает echo и переменная без кавычек...

Для твоего случая, если хочется сделать все средствами bash, лучше использовать массив, наподобие

OIFS="$IFS"; IFS=$'\n'; DIM=( `mysql bd -e "$query"` ) ; IFS="$OIFS"

То есть указывам, что поля разделяются символом перевода строки, читаем вывод команды, возвращаем разделитель обратно, а потом выводит по одной строк --- по одном элементу.

echo "${DIM[0]}"; echo "${DIM[1]}"

Читай man bash

mky ★★★★★
()
Ответ на: комментарий от mky

угум спасиб, но сама таблица из символов --- и | + исчезает, почему? она выводится как то особенно? думал не в stdout а stderr (2дескриптор) пробовал 2>&1 не помогло :\

fura13 ★★★
() автор топика
Ответ на: комментарий от fura13

mysql выводит эти границы, только если stdout перенаправлен в терминал (можно отменить опцией -B) В противном случае эти границы не выводятся, что очень логично и помогает по жизни :)

Chumka ★★★
()
Ответ на: комментарий от Chumka

> можно отменить опцией -B

-B, --batch Don't use history file. Disable interactive behavior. (Enables --silent)

по --help глянул нету ничего про терминал и стдаут

fura13 ★★★
() автор топика

А если, вместо echo использовать printf ?

Neksys ★★★
()

Кстати, сравни вывод:

$ echo $rez

и

$ echo "$rez"

Neksys ★★★
()
Ответ на: комментарий от fura13

Да в любом случае попробуйте сравнить вывод mysql с этой опцией и без нее. Натравите вывод mysql на wc -l и он покажет Вам ЧИСЛО РЯДОВ без учета всяких границ, так как вывод идет не на терминал, а в пайп.

Chumka ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.