【发布时间】:2021-08-18 06:22:09
【问题描述】:
我正在尝试在 bash 中创建一个选择,让您可以从 .txt 文件中选择项目。 每个项目都是一个新行,我读取这些项目并将它们放入一个数组中:
items=()
while read -r line; do
items+=("$line")
done <items.txt
这很好用。
之后我将它们放在一个选择中:
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
选择逐行显示所有项目。这一切都很好,直到有超过 9 个项目。当有超过 9 个项目时,它会显示它们真的很奇怪。它还结合了项目名称。见下图。
我在网上阅读它可能与 bash 如何读取编号参数有关。 但我找不到任何解决方案。 Why do bash command line arguments after 9 require curly brackets?
有人知道如何解决 bash 选择中最多只能有 9/10 个选项的问题吗?
【问题讨论】:
标签: bash