bashをインデックス0から始め、出力を選択する方法は?

bashをインデックス0から始め、出力を選択する方法は?

経験不足の一部のユーザーでも、次のことを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メニューはそのような目的で作られたものではありません。バッシュユーザー(「プログラマー」を読む) - その目的はエンドユーザー(GUIの前の頃)彼らは通常bashについて何も知りませんでした。スクラッチベースのリスト(したがってあなたの好み)に慣れるのはプログラマーの仕事ですが、エンドユーザーには慣れていません。

関連情報