• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:shellスクリプトで引数をhashとして展開させ)

シェルスクリプトで引数をハッシュとして展開させる方法

このQ&Aのポイント
  • シェルスクリプトで引数をハッシュの文字列として展開する方法について考えています。
  • 現在はelifの部分を沢山書いていく必要がありますが、$1の値をハッシュとして展開させる方法がわかりません。
  • 具体的な展開の方法がわからず困っています。助けていただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

eval

taku0
質問者

お礼

一番最初の回答 evalでぐぐってみて、 evalをヒントに恐る恐るやってみたら、下記の形でうまくいきました。 eval echo "$1:\${$1[$(( ${RANDOM} * 11 / 32768 ))]}" ありがとうございます。

その他の回答 (2)

  • entree
  • ベストアンサー率55% (405/735)
回答No.3

これでよろしいでしょうか? case "$1" in abc|xyz)  eval "echo \"\$1:\${$1[\$(( \${RANDOM} * 11 / 32768 ))]}\"" ;; *)  echo "$1:${zzz[$(( ${RANDOM} * 11 / 32768 ))]}" ;; esac

taku0
質問者

お礼

スクリプトの記述まで頂きありがとうございます。 実行してみたのですが、エラーとなってしまっていました。 ありがとうございました。また宜しくお願い致します。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

あるいは、hash["abc0"]="0" などと、$1まで含めたものをキーにする

taku0
質問者

お礼

なるほどですね、hashのキーに入れるのは、思いつきませんでした。 ありがとうございます。

関連するQ&A