2

MySQL クライアント接続を使用して発行FLUSH TABLES WITH READ LOCKし、LVM スナップショットを作成しています。高レベルのスクリプト (Ruby) でスナップショット作成のリターン コードを取得したいのですが、MySQL クライアント内でそれを取得する方法を判断できません。単純化するには:

mysql> system pwd
/root

system私はそれが0を返す ことを期待しています。

mysql> system foo
sh: 1: foo: not found

systembashなどで127が返されることを期待しています.

MySQLクライアント内でそのエラーコードを取得し、MySQLクライアントが終了したときにそれを返したり、ファイルに書き込んで制御スクリプトで読み取ったりする方法はありますか?

4

2 に答える 2

0

あなたはこれを行うことができます:

root@localhost> mysql
mysql> システムバッシュ
root@localhost> foo
フー:見つかりません
root@localhost> echo $? > ログファイル
root@localhost> 終了
mysql>

logfile戻り値が含まれるようになりました。自動化したい場合は、たとえば次のようにします。次のスクリプトを作成します。

script_bash.sh:

#!/bin/bash
foo
echo $? > logfile

script_mysql.sql:

system script_bash.sh

それで:

root@localhost> chmod +x script_bash.sh
root@localhost> mysql < script_mysql.sql #or mysql -e"script_bash.sh"
root@localhost> cat logfile
127

できるかどうかは、実行する必要があるという意味ではありません:)「制御スクリプト」からシステムコマンドを起動することを強くお勧めします。

于 2013-09-06T10:31:08.457 に答える