2015-05-30 2 views
1

Я делаю небольшой проект, используя BASH для «Телефонной книги». Он хранит данные в базе данных mysql и использует временный файл для работы с Select.Заполнение списка zenity с помощью результатов mysql

Я использую визуальный интерфейс zenity, поэтому я хочу отображать данные, хранящиеся в базе данных, с помощью Диалога списка Zenity. Для этого мне нужно использовать значения столбцов отдельно, поэтому мне нужно использовать команду awk для их получения, но у меня возникают проблемы с объединением команд zenity и awk.

Сохранение значений базы данных, разделенных символом \ t во временном файле.

echo "SELECT name,address,telephone,email FROM agenda" | mysql projAgenda -N -u root -p12345 >> tempAgenda.dat 

Отображение данных с помощью Zenity --list

awk -F'\t' '{zenity --list --title="Listar registos" --text="" --column="Name" --column="Address" --column="Telephone" --column="E-mail" $1 $2 $3 $4}' tempAgenda.dat 

Но я всегда получаю ту же ошибку:

awk: line 1: syntax error at or near =

Может кто-то помочь? Я знаю, что, возможно, я очень сильно стараюсь смешивать эти две команды, но не могу думать об этом по-другому.

EDIT: Вывод запроса (разделенный табуляция):

José Manel Rua António Cão 219886868 [email protected] 
Cláudio Pinto Praça Dom Rui da Camara 219886820 [email protected] 
+1

Не Zenity команды оболочки? Почему вы пытаетесь запустить его в awk-скрипте? –

+1

Можете ли вы запустить команду zenity и передать ее awk? – rahul

+0

отредактируйте свой вопрос, чтобы включить 1-2 строки вывода из запроса 'mysql'. Удачи. – shellter

ответ

2

Вы должны заменить вкладки разделителя, возвращенный MySQL с новой строкой, так как zenity ожидает каждый столбец, чтобы быть на отдельную строку, когда это читает из stdin. Вы можете использовать tr для этого:

mysql -N ... | tr '\t' '\n' | zenity --list --title="Listar registos" --text="" --column="Name" --column="Address" --column="Telephone" --column="E-mail" 

Это будет производить следующий список:

enter image description here

+0

Это не сработает, потому что причина, по которой я показываю, используя диалог списка zenity, состоит в том, чтобы показать все из них в одном окне ... но спасибо в любом случае –

+0

Я показываю их все в одном окне. Ты это пробовал? – hek2mgl

+0

Ждите комментария, который я только что устарел. Дай мне проверить. Выглядит хорошо. –

Смежные вопросы