gpt4 book ai didi

arrays - 使用字符串数组中的数字使用 bash 进行用户输入

转载 作者:行者123 更新时间:2023-12-04 10:07:06 24 4
gpt4 key购买 nike

我有一个文本文件,我试图使用 Bash 读入一个数组。以下是文本文件的内容:

Vol12
Vol0
Vol2
Vol21

我想从上面的字符串中提取数字并将其呈现给用户以选择要输入的数字,例如:
12 - Vol12
0 - Vol0
2 - Vol2
21 - Vol21

用户可以输入 12 来选择 Vol12 或 2 来选择 Vol2 并使用选择来做进一步的操作。

我一直在寻找如何做到这一点,但这是我到目前为止所拥有的:
Vol="/Users/alex/Downloads/file.txt"

options=($(tail -n+1 $Vol | awk '{print $1}' | sort | uniq) All Quit)

for (( i = 0; i < ${#options[@]}; i++ )); do
echo "$i - ${options[i]}"
done

echo -e "Enter number corresponding to the Volume snapshot you want to restore: \n"
read vol

}

以下输出是我用上面的代码得到的:
OPTIONS MENU
0 - Vol12
1 - Vol0
2 - Vol2
3 - Vol21
4 - All
5 - Quit
Enter number corresponding to the Volume snapshot you want to restore:

如何让输出显示如下并能够选择 12 或 0 ?
12 - Vol12
0 - Vol0
2 - Vol2
21 - Vol21

请帮忙

最佳答案

您可以使用关联数组:

#!/bin/bash
Vol="/Users/alex/Downloads/file.txt"
declare -a arr

#Loop reads each line of the file
while IFS= read -r line; do
n=${line##*[!0-9]} #Gets the number at the end of this line
arr[$n]=$line #Uses it as the key to the array, the content being the whole line
echo "$n - $line"
done < "$Vol"

read -p "Select one from above. " vol
echo "You selected ${arr[vol]}."

例如(我将其另存为 sh.sh ):
$ ./sh.sh
12 - Vol12
0 - Vol0
2 - Vol2
21 - Vol21
Select one from above. 2
You selected Vol2.

关于arrays - 使用字符串数组中的数字使用 bash 进行用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61530378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com