Заполнение списка zenity результатами mysql

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

Я использую визуальный интерфейс zenity, поэтому хочу отобразить данные, хранящиеся в базе данных, используя диалог Zenity List. Для этого мне нужно использовать значения столбцов по отдельности, поэтому мне нужно использовать команду 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: строка 1: синтаксическая ошибка в или около =

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

РЕДАКТИРОВАТЬ: вывод запроса (разделенных вкладками):

José Manel  Rua António Cão 219886868   zemaneli@live.com 
Cláudio Pinto   Praça Dom Rui da Camara 219886820   claudiopinto@live.com

1 ответ

Решение

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

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

Это приведет к следующему списку:

введите описание изображения здесь

Другие вопросы по тегам