1

「電話帳」にBASHを使用した小さなプロジェクトを行っています。データを mysql データベースに保存し、一時ファイルを使用して Select を操作します。

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: 1 行目: = またはその付近で構文エラーが発生しました

誰か助けてくれませんか?これらの 2 つのコマンドを混在させようとすると、非常に大きな問題が発生する可能性があることはわかっていますが、別の方法で実行することは考えられません。

編集: クエリの出力 (タブで区切られています):

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

1 に答える 1

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" 

これにより、次のリストが生成されます。

ここに画像の説明を入力

于 2015-05-30T15:24:15.603 に答える