小编Daa*_*rop的帖子

Bash Select 显示奇​​怪的超过 9 个选项

我正在尝试在 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 个项目时,它会显示它们真的很奇怪。它还结合了项目名称。见下图。

IMG:显示很奇怪

IMG:少于 9 项

我在网上阅读它可能与 bash 如何读取编号参数有关。但我找不到任何解决方案。为什么 9 之后的 bash 命令行参数需要大括号?

有人知道如何解决 bash 选择中最多只能有 9/10 个选项的问题吗?

bash

2
推荐指数
1
解决办法
55
查看次数

标签 统计

bash ×1