Вывод файла в массив с использованием bash - PullRequest
0 голосов
/ 23 апреля 2020

Я отсортировал (по убыванию) вывод в файл в табличном формате из запроса, который я сделал с помощью aws CLI. Мне нужно взять поле из выходного файла и представить все уникальные строки в качестве опции для выбора пользователем. Вот пример выходного файла:

Description        Snapshot             StartTime
Volume0            snap-x123456789      2020-04-22T20:55:10
Volume10           snap-y123456789      2020-04-22T20:45:09
Volume12           snap-a123456789      2020-04-22T20:40:08
Volume15           snap-b123456789      2020-04-22T20:35:07
Volume0            snap-c123456789      2020-04-22T20:30:06
Volume10           snap-d123456789      2020-04-22T20:25:05

Цель состоит в том, чтобы представить все тома после прочтения указанного выше вывода и предложить пользователю ввести номер тома ИЛИ пользователь может ввести A для ВСЕХ, чтобы система могла восстановить снимок ( s) для этого объема. Примерно так:

0 - Volume0
10 - Volume10
12 - Volume12
15 - Volume15

Вот что у меня есть, как мне заставить пользователя ввести число, соответствующее номеру тома, или ввести ВСЕ, чтобы восстановить все? Должен ли я использовать массив для из выходного файла? Как я могу сделать это эффективно?

output() {

    echo "Here is a list of volumes found in $region"

    for DR in (grep Volume# "$input" | top -n 1)
    do 
    echo $DR
    done

    echo "Hello, please tell me what Volume you are searching for..(Volume?):"
    read volSearch

    echo -e "Searching for newest SnapshotIds in region using output file GetfileSnapId for:\n" $volSearch
    echo
    sleep 5
    input="/Users/user/Downloads/GetfileSnapId"


    if x=$(grep -m 1 "$volSearch" "$input")
    then
        echo
        echo "$x"
    else
        echo
        echo "$volSearch not found..ending search"
    fi

    extractSnap=$(echo "$x" | cut -d'|' -f2 )

    echo
    echo $extractSnap

    regionoutput=$(echo "$extractSnap" | awk '{print $4}' )
    echo
    echo "$regionoutput"
}

1 Ответ

1 голос
/ 23 апреля 2020

Посмотрите на команду выбора bash.

Я поместил в скрипт bash следующее:

#!/bin/bash

options=($(tail +2 t.txt | cut -d' ' -f1 | sort | uniq) Quit)

PS3='Please enter your choice: '
select opt in "${options[@]}"
do
    echo $opt

    if [ $opt = "Quit" ]
    then
        break
    fi
done
...