Попытка сохранить результат grep в массиве, но хочет, чтобы каждое значение сохранялось как отдельный ключ - PullRequest
1 голос
/ 29 марта 2020

Привет, я новичок в скриптинге и пытаюсь разобраться с массивами.

Я создал текстовый файл с именем colors, который содержит следующие данные:

1=red
2=black
3=blue

Я хочу хранить каждый цвет в массиве как отдельный ключ, но код, который я использую ниже, сохраняет результат как один ключ. Я думаю, что мне нужно grep построчно в l oop, но не уверен

#!/bin/bash
declare -a result1
for result in $(grep 1= colours |cut -d "=" -f 2)
do
    result1+=("$result")
done
echo ${result1[@]}

1 Ответ

1 голос
/ 29 марта 2020

Преобразуйте файл с помощью sed -E 's/(.*)=(.*)/result1[\1]="\2"/' file в следующее:

result1[1]="red"
result1[2]="black"
result1[3]="blue"

и получите его с source в текущей среде:

source <(sed -E 's/(.*)=(.*)/result1[\1]="\2"/' file)

См. Вывод declare -p result1:

declare -a result1=([1]="red" [2]="black" [3]="blue")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...