0

行データを BASH 変数に保存し、それを使用していくつかの PHP スクリプトを起動しようと数時間試みてきました。

これまでのところ、結果セット全体をエコーアウトすることしかできませんでした。それ以来、そのスクリプトを壊してしまったので、ここに貼り付けることさえできません。これは私が持っているもので、まったく機能していません。

#! bin/bash
query=`echo "SELECT id FROM searches WHERE running=1 AND id_user=2" | mysql -u root`

これまで BASH を使用したことがないので、完全に迷っています。

私が求めているのは、mysql に接続し、その行のデータを使用して結果セットをループする方法を示すことができるいくつかのリソースです。

ありがとう。

4

3 に答える 3

2

mysql --silent次のコマンドを使用して、出力を Bash 変数に読み込むことができますwhile read

>sql="SELECT id FROM searches WHERE running=1 AND id_user=2"
>mysql --silent -u ctrahey test -e "$sql" |while read myid; do
 php -f my_processor.php $myid; 
done
>

ノート:

  • sql="...SQLのBash変数を設定します(実際には必要ありません。読みやすくするだけです)
  • mysql -e-e オプションを使用すると、クエリを渡すことができるため、STDIN は必要ありません。
  • mysql --silent--silent は、mysql が通常行う余分なフォーマットを抑制します。私のテストでは、これも実際には不要でした (出力のパイプ文字は Bash を台無しにしませんでした)。
  • php -f ..これはphpファイルを実行し、現在のIDを引数として渡します。
于 2012-08-25T01:01:55.303 に答える
0

Bashはmysqlと対話するのに適した言語ではなく、非常に単純な場合にのみ機能します。代わりにphpを使用してください(phpについて言及したので)、mysqlデータベースと正常に対話するためのAPIがあります。はい、bashスクリプトと同じようにphpスクリプトを実行できます。

于 2012-08-25T00:50:18.877 に答える
0

MySQL で単一のコマンドを実行する場合は、mysql -eまたはを使用しますmysql --execute。これらは同じコマンドですが、2 番目のバージョンの方が覚えやすいです。このフラグを上記に追加すると、行が変数に格納されます。

ただし、geirha が述べたように、BASH は行データを取得するのに最適な言語ではない可能性があります。ただし、BASH を使用して解析することを選択した場合mysql -eは、クエリを実行するための適切なコマンドです。

于 2012-08-25T00:59:10.420 に答える