在bash中将查询存储在数组中

Luc*_*nzo 14 mysql linux bash

我的脚本需要在结构中存储查询结果:

 #!/bin/bash
 user="..."
 psw="..."
 database="..."
 query="select name, mail from t"
 customStructure=$(mysql -u$user -p$psw $database -e "$query";)
Run Code Online (Sandbox Code Playgroud)

我不知道如何从查询结果中存储{name,mail}数组.

我需要这样的结构:

 array=[ [name1,mail1] , [name2,mail2], ....., [nameN, mailN] ]
Run Code Online (Sandbox Code Playgroud)

有没有办法在bash中这样做?

Ale*_*lex 17

Bash数组初始化如下:

myarray=("hi" 1 "2");
Run Code Online (Sandbox Code Playgroud)

要将命令输出的各个部分捕获到数组中,我们必须遍历输出,将结果添加到数组中.这可以这样做:

for i in `echo "1 2 3 4"`
do
    myarray+=($i)
done
Run Code Online (Sandbox Code Playgroud)

在您的示例中,看起来您希望获得MySQL命令的输出并将其输出行的部分存储到子数组中.我将向您展示如何将线捕获到数组中,并且鉴于此,您应该能够弄清楚如何将子数组放入其中.

while read line
do 
    myarray+=("$line")
done < <(mysql -u${user} -p${psw} ${database} -e "${query}")
Run Code Online (Sandbox Code Playgroud)

值得一提的是,对于这种MySQL操作,您不需要输出元数据(例如漂亮的格式和表名),您可以使用MySQL的-B选项来进行"批量输出".

  • 没问题,我真的很高兴我能帮忙!如果您想了解更多关于Bash数组的信息,请查看以下示例:http://tldp.org/LDP/abs/html/arrays.html (2认同)