使用bash将文件输出到一个数组中

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

我使用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代表ALL,这样系统就可以恢复该卷的快照。类似这样。

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

我是这样的,如何让用户输入对应卷号的数字或者输入ALL来还原所有卷?我是否应该使用数组来从输出文件中获取数据?我如何才能有效地做到这一点?

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"
}
bash amazon-web-services command-line-interface
1个回答
1
投票

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