![创建数字选择列表](https://linux22.com/image/147561/%E5%88%9B%E5%BB%BA%E6%95%B0%E5%AD%97%E9%80%89%E6%8B%A9%E5%88%97%E8%A1%A8.png)
我有一个文件,其中包含单词列表。我如何读取该文件,然后创建一个菜单,以便我可以从列表中选择一种动物?简单的 bash 脚本,没什么花哨的。
示例:动物.txt
dog
cat
lion
bear
示例:所需菜单
1 - dog
2 - cat
3 - lion
4 - bear
Select choice: 3
You chose a lion.
答案1
答案2
我们通常不会在这里请求脚本,但我会帮助您解决困难的部分。
假设 shell 具有以下select
功能(例如bash
)。这应该可以帮助您开始:
#!/bin/bash
PS3='Select choice: '
select ch in "dog" "cat" "lion" "bear"; do
case $REPLY in
[1-4]) break ;;
*) echo 'Try again' >&2
esac
done
printf 'You chose a %s\n' "$ch"
select
将bash
显示一个菜单和一个提示。提示由变量的值给出PS3
。
该select
语句是一个循环,在每次迭代中,用户都会做出选择。选择数字(或用户输入的任何内容)位于 中$REPLY
,实际的菜单项位于该语句的变量中select
(这里是$ch
)。
case
循环中的语句测试是否给出了有效响应。如果是这样(即$REPLY
是 1 到 4 之间的单个数字),我们就break
退出循环。如果用户输入了任何其他内容,则会打印一条简短的错误消息,并且循环将运行下一次迭代。
如果您有超过 9 个菜单项,您可能需要以一种更复杂的方式测试有效输入,因为该$REPLY
值中可能包含多个字符。
循环结束后,可以从菜单中进行选择$ch
。