![如何强制 bash 从索引 0 开始并选择输出?](https://linux22.com/image/59546/%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6%20bash%20%E4%BB%8E%E7%B4%A2%E5%BC%95%200%20%E5%BC%80%E5%A7%8B%E5%B9%B6%E9%80%89%E6%8B%A9%E8%BE%93%E5%87%BA%EF%BC%9F.png)
好吧,即使是一些经验不足的bash
用户也会同时知道以下事实:bash
数组总是从索引 0 开始。但是,select
总是会做自己的事情,如以下示例所示:
#!/bin/bash
choices=(NONE nyc la chicago little_rock miami)
select choice in ${choices[@]}; do
[[ " ${choices[*]} " == *" $choice "* ]] && break
done
echo "Choice was: $choice ; first element is ${choices[0]}"
输出是:
1) NONE
2) nyc
... etc. ...
但 ${choices[0]}
尽管如此,仍将输出“NONE”!所以我觉得一定有办法强制select
开始索引 0,不是 1。
(如果有人质疑这一点的更深层次的意义:实际上是存在的,特别是当您必须经常跳过超过 9 个选项的处理(最好在菜单中设置为“0”),并且为了方便起见,您会放最少的-使用的选项为“10”,因此几乎在每种情况下您可能只需键入一个数字。)
答案1
没有选项可以更改菜单显示项目编号的基数。您在问题中提到,“..即使是一些经验不足的 bash 用户也会知道(关于)...索引 0”。
是的,这是正确的,但select
菜单并不是为bash 用户(阅读“程序员”)-它的目的是终端用户(GUI 时代之前)他们通常不知道(或关心)任何关于 bash 的事情。熟悉从零开始的列表是程序员的事情(因此是您的偏好),但它绝对不是最终用户所习惯的。