zptyでmysqlを制御する方法は何ですか?

zptyでmysqlを制御する方法は何ですか?

mysqlコンソールクライアント用のラッパースクリプトを作成しようとしています。これを行う間、私は偶然zptyを見つけました。完璧に見えますね。

最初の目標は、一部のテーブルの内容を取得することですが、失敗しました。非常に奇妙な動作があります。

zshを実行して自分自身を入力すると

$ zmodload zsh/zpty
$ zpty -b MYSQL mysql DATABASE-NAME
$ zpty -r MYSQL

すべてが期待どおりに機能し、

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 448
Server version: 5.5.54-0+deb8u1 (Debian)

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [DATABASE-NAME]> %

印刷されます。

シェルスクリプトに同じコードを入力すると

#!/bin/zsh
zmodload zsh/zpty
zpty -b MYSQL mysql DATABASE-NAME
zpty -r MYSQL

実行すると何も印刷されません。

シェルスクリプトから-bを削除すると

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 449
Serv

印刷されます。その後、スクリプトが停止します。

全体的に私は非常に一貫性のない動作を発見しました。これはバグですか?私は何が間違っていましたか?

ベストアンサー1

おすすめ記事