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

问题描述 投票:0回答:1

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

*************************** 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
mysql linux bash
1个回答
1
投票

数组的索引必须是数字。但您可以使用索引而不是字段名称。变量只在块内知道。但是通过一个简单的技巧(sourcen),你可以将它们带到外面。

# 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
© www.soinside.com 2019 - 2024. All rights reserved.