12

bashスクリプトの初心者です。sql-query の出力を変数に保存したいのですが、

実際には、すべてのクエリを mysql に接続する必要があります。

mysql -u $MYUSER -p$MYPASS -D database

すべての出力を個別に変数に保存したい

サンプルクエリは次のとおりです。SELECT domain FROM domains WHERE user='$USER'

$variable1 = FIRST_OUTPUT
$variable2 = 2ND_OUTPUT

ありがとうございました

4

3 に答える 3

27

bash スクリプトから取得 - select from database into variable 、クエリ結果を変数に読み込むことができます。

mysql> SELECT * FROM domains;
+-------+---------+
| user  | domain  |
+-------+---------+
| user1 | domain1 |
| user2 | domain2 |
| user3 | domain3 |
+-------+---------+

使用法

$ myvar=$(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")
$ echo $myvar
domain1 domain2 domain3

echo出力用の bash コマンドです。次に、個別の変数に分割$myvarできます。

$ read var1 var2 var3 <<< $myvar
$ echo $var1
domain1
$ echo $var2
domain2

これら 2 つのコマンドを 1 つのコマンドに組み合わせることができます。

read var1 var2 var3 <<< $(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")

結果を配列に保存することができます (そこにいくつのレコードがあるかわからない場合に便利です):

$ read -ra vars <<< $(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")
$ for i in "${vars[@]}"; do
$     echo $i
$ done
domain1
domain2
domain3
于 2013-07-21T17:58:49.897 に答える
2

別の方法は次のとおりです。

dbquery=`mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains"`      
dbquery_array=( $( for i in $dbquery ; do echo $i ; done ) )

dbquery最初の行は、配列のような方法で変数にクエリからのすべての出力を格納します。2 行目は、単純なループで をdbquery配列に変換します。dbquery_arrayfor

于 2016-06-10T01:13:23.693 に答える
2

これは私がしました

変数=mysql -u root -ppassworrd database << EOF select MAX(variable) AS a from table where variable2 = 'SOMETEXT' AND day(datevalue) >= 22; EOF

役立つことを願っています

于 2018-03-01T03:24:15.720 に答える