bash:ユーザー入力を他の配列と一致させて置き換える

bash:ユーザー入力を他の配列と一致させて置き換える

まずはタイトルが残念ですね。私の抱負をどのように言葉で表現するのか分かりません。ただし、コーディング/スクリプトの観点からは非常に基本的でなければなりません。しかし、私は何とかそれを実装できませんでした:/

プロンプトまたはコマンドライン引数を介してユーザー入力を待つbashスクリプトがあります。許可された回答はほんの数回しかないので、配列と比較して確認します。今、私たちはそれを「パッケージ」と呼びます。許可される各回答は、他の項目に対する単純で人間が読めるエイリアスと同じです。これは配列の2行目で宣言されます。

declare -a packs=('low', 'mid', 'high')
declare -a packcontent=('1+1+2', '2+2+3', '3+3+4')

parameters=${packcontent[xxx]}

私が失敗したのは、最初の配列を2番目の配列に解析することです。ユーザー入力インデックスを変数に渡すことができるようにするにはどうすればよいですか?

例:ユーザーが「低」と言った場合は、「低」が最初の配列の最初の(0番目)要素であることに注意してください。したがって、2番目の配列の最初の(0番目)要素に「パラメータ」を割り当てる必要があります。

parameters=1+1+2

中間ステップが欠けているか、bashがそれを置き換えることができないかどうかはわかりませんが、これを達成する方法がわかりません。

私の問題の私の説明がそれほど混乱していないことを願っています。

ありがとうございます!

ベストアンサー1

これはbash連想配列操作のように見えます!

文字列でインデックス付けされた配列を作成できます。他の言語では、「ハッシュ」または「マップ」として知ることができます。以下を考慮してください。

$ declare -A packs
$ packs=( [low]='1+1+2' [mid]='2+2+3' [high]='3+3+4' )
$ parameters=${packs[low]}
$ echo $parameters
1+1+2

おすすめ記事