将每个mysql记录(多行)存储为bash中的变量

时间:2019-04-11 13:53:01

标签: mysql linux bash

我有运行SQL查询并输出以下内容的bash脚本:

*************************** 1. row ***************************
name: danny
id: 123
age: 1
wait: 326.000000
*************************** 2. row ***************************
name: ronny
id: 1234
age: 2
wait: 21.000000

我试图了解如何创建一个数组并将每个记录存储在其中,对于每个记录,我希望能够对其参数进行赋值,例如:

Person1["name"] = danny,  Person2["name"]=ronny

1 个答案:

答案 0 :(得分:1)

数组的索引必须是数字。但是您可以使用索引代替字段名。 变量仅在块内已知。但是,通过一个简单的技巧(来源),您就可以将它们带到外面。

# ASSUMPTION: the input data are in the file

Personen=$(mktemp)
i=0
while read line; do
    [[ "${line:0:1}" == '*' ]] && continue
    key=${line%%:*}
    value=${line##*: }
    [[ "$key" == "name" ]] && ((i++))
    echo "Person_${key}[$i]=\"$value\""
done < file >$Personen

source $Personen

echo "${Person_name[1]} ${Person_age[1]}"
echo "${Person_name[2]} ${Person_wait[2]}"

rm $Personen

输出

danny 1
ronny 21.000000