#mysql #linux #bash
#mysql #linux #bash
Вопрос:
У меня есть скрипт 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
Ответ №1:
Индекс массива должен быть числовым. Но вы можете использовать индекс вместо имени поля. Переменные известны только внутри блока. Но с помощью простого трюка (sourcen) вы выводите их наружу.
# ASSUMPTION: the input data are in the file
Personen=$(mktemp)
i=0
while read line; do
[[ "${line:0:1}" == '*' ]] amp;amp; continue
key=${line%%:*}
value=${line##*: }
[[ "$key" == "name" ]] amp;amp; ((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