bash - SQL查询输出到变量

mos*_*d77 12 mysql sql variables bash shell

我是bash脚本的新手.我想在变量中保存sql-query输出,但是

实际上我必须连接每个查询到mysql:

mysql -u $MYUSER -p$MYPASS -D database
Run Code Online (Sandbox Code Playgroud)

并希望将每个输出保存为单独变量

示例查询是: SELECT domain FROM domains WHERE user='$USER'

$variable1 = FIRST_OUTPUT
$variable2 = 2ND_OUTPUT
Run Code Online (Sandbox Code Playgroud)

谢谢

Yan*_*ang 24

bash脚本中选择 - 从数据库中选择变量,可以将查询结果读入变量.

mysql> SELECT * FROM domains;
+-------+---------+
| user  | domain  |
+-------+---------+
| user1 | domain1 |
| user2 | domain2 |
| user3 | domain3 |
+-------+---------+
Run Code Online (Sandbox Code Playgroud)

用法

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

echo是输出的bash命令.然后,您可以拆分$myvar为单独的变量:

$ read var1 var2 var3 <<< $myvar
$ echo $var1
domain1
$ echo $var2
domain2
Run Code Online (Sandbox Code Playgroud)

您可以将这两个命令合并为一个命令:

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

可以将结果存储到数组中(如果您不知道有多少记录,则非常有用):

$ 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
Run Code Online (Sandbox Code Playgroud)