我正在尝试在 bash 中创建一个选择,让您从 .txt 文件中选择项目。每个项目都是一个新行,我读取这些项目并将它们放入一个数组中:
items=()
while read -r line; do
items+=("$line")
done <items.txt
Run Code Online (Sandbox Code Playgroud)
这工作正常。
之后,我将它们放入一个选择中:
PS3="Choose Item > "
select item in "${items[@]}" "Cancel"; do
case ${item} in
Cancel)
echo "You chose to cancel"
break
;;
*)
echo "You chose ${item}"
break
;;
esac
done
Run Code Online (Sandbox Code Playgroud)
选择逐行显示所有项目。这一切正常,直到有超过 9 个项目。当有超过 9 个项目时,它会显示它们真的很奇怪。它还结合了项目名称。见下图。


我在网上阅读它可能与 bash 如何读取编号参数有关。但我找不到任何解决方案。为什么 9 之后的 bash 命令行参数需要大括号?
有人知道如何解决 bash 选择中最多只能有 9/10 个选项的问题吗?
bash ×1