Заполнение списка 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"
Это приведет к следующему списку: