
お世話になります。
シェルスクリプトで引数をハッシュの文字列として展開できないかな・・と思考錯誤しています。
. ./test.sh abc
#!/bin/bash
declare -A abc # -Aでハッシュ宣言
abc["0"]="0"
abc["1"]="1"
abc["2"]="2"
abc["3"]="3"
abc["4"]="4"
abc["5"]="5"
abc["6"]="6"
abc["7"]="7"
abc["8"]="8"
abc["9"]="9"
abc["10"]="10"
declare -A xyz # -Aでハッシュ宣言
xyz["0"]="0"
xyz["1"]="1"
xyz["2"]="2"
xyz["3"]="3"
xyz["4"]="4"
xyz["5"]="5"
xyz["6"]="6"
xyz["7"]="7"
xyz["8"]="8"
xyz["9"]="9"
xyz["10"]="10"
declare -A zzz # -Aでハッシュ宣言
zzz["0"]="0"
zzz["1"]="1"
zzz["2"]="2"
zzz["3"]="3"
zzz["4"]="4"
zzz["5"]="5"
zzz["6"]="6"
zzz["7"]="7"
zzz["8"]="8"
zzz["9"]="9"
zzz["10"]="10"
if [ "$1" = "abc" ];
then
echo "$1:${abc[$(( ${RANDOM} * 11 / 32768 ))]}"
elif [ "$1" = "xyz" ];
then
echo "$1:${xyz[$(( ${RANDOM} * 11 / 32768 ))]}"
else
echo "$1:${zzz[$(( ${RANDOM} * 11 / 32768 ))]}"
fi
もしハッシュが増える場合、elifの部分を沢山書いていくのではなく、
下記のような形にすっきりさせたいと思っているのですが、$1の値をハッシュとして展開させるやり方がわかりません。
if [ "$1" ];
then
#ここの部分で$1をハッシュとして展開させる為の記述方法がわかりません。
#下記のいずれも「: 誤った代入です」となってしまいます
echo "$1:${$${1}[$(( ${RANDOM} * 11 / 32768 ))]}"
echo "$1:${${1}[$(( ${RANDOM} * 11 / 32768 ))]}"
echo "$1:${${1[$(( ${RANDOM} * 11 / 32768 ))]}}"
echo "$1:${$1[$(( ${RANDOM} * 11 / 32768 ))]}"
else
echo "$1:${zzz[$(( ${RANDOM} * 11 / 32768 ))]}"
fi
どなた様か、ご教授願えませんでしょうか。よろしくお願いしたします。
No.3
- 回答日時:
これでよろしいでしょうか?
case "$1" in
abc|xyz)
eval "echo \"\$1:\${$1[\$(( \${RANDOM} * 11 / 32768 ))]}\"" ;;
*)
echo "$1:${zzz[$(( ${RANDOM} * 11 / 32768 ))]}" ;;
esac
スクリプトの記述まで頂きありがとうございます。
実行してみたのですが、エラーとなってしまっていました。
ありがとうございました。また宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インストールできないですどう...
-
Core 2 Duo の古いパソコンに最...
-
LinuxでWine使うとどのくらいWi...
-
ubuntuで デイスク/deb/loopと...
-
ubuntu(linux)のシャットダウン...
-
「トゥ]の出し方
-
ubuntu が起動しない。
-
ubuntuのシャットダウンが進ま...
-
WinSCPでLinux(CentOS6.10)に...
-
bashでシングルクォート内の変...
-
Linux のシェルスクリプトの強...
-
VirtualBox 6.1 → 7.1 でUbuntu...
-
Windowsのローカルディレクトリ...
-
lubuntuのインストールが終わり...
-
Ubuntu on Xorgのログインについて
-
ubuntuのターミナルで書いたコ...
-
ログにserver reached MaxReque...
-
Lubuntuでとにかく軽量のバージ...
-
Ububtuでファイル共有できない...
-
ssl_request_logの必要性について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LinuxでWine使うとどのくらいWi...
-
Core 2 Duo の古いパソコンに最...
-
VirtualBox 6.1 → 7.1 でUbuntu...
-
インストールできないですどう...
-
ubuntuのシャットダウンが進ま...
-
「トゥ]の出し方
-
Linux のシェルスクリプトの強...
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
WinSCPでLinux(CentOS6.10)に...
-
ubuntuで デイスク/deb/loopと...
-
Ubuntu on Xorgのログインについて
-
私のパソコンでVirtualBoxは使...
-
Ububtuでファイル共有できない...
-
Windowsのローカルディレクトリ...
-
Linuxでブートディスクの交換後...
-
ログにserver reached MaxReque...
-
ssl_request_logの必要性について
-
ssh接続しようとしたらエラーメ...
-
2TBのUSBメモリを2000円ほどで...
おすすめ情報