お世話になります。
シェルスクリプトで引数をハッシュの文字列として展開できないかな・・と思考錯誤しています。
. ./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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/10 08:51
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- 数学 (x+y+2z)(2x+3y-z)(4x-y-3z)を展開した時のxyzの係数がx・3yなんですが、 1 2022/05/13 22:24
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- その他(行事・イベント) 高一 背ネーム 案 体育祭 今のところ名前が「もえ」で ①いつ"もえ"がお! ②いつ"もえ"がおの魔 2 2023/07/28 23:22
- Excel(エクセル) ExcelのABC分析についてです。 IF関数 VLOOKUP関数等など使わずに、ABC分析は出来ま 2 2023/06/15 23:57
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 08:37
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/03/09 14:24
- Gmail Googleの連絡先を共有する方法があればアドバイス願います。 3 2023/03/30 11:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LinuxMintが突然フリーズする
-
AWSでSSH接続をしたいのですが...
-
ubuntuで デイスク/deb/loopと...
-
LinuxのノートパソコンでDVDコ...
-
yumやaptで依存関係で自動的に...
-
ubuntuサーバーを久々に再起動...
-
e4defragコマンドでデフラグ
-
ノートPCでUSBから起動しない
-
lubuntuでフォントをインストー...
-
VirtualBox ゲストOSにPC内蔵HD...
-
Ubuntuで数字だけのユーザーア...
-
ubuntu(linux)のシャットダウン...
-
Chrome OS フレックスはインス...
-
redmineにメールを飛ばす方法
-
Ubuntuサーバーでメールを受信...
-
ChromebookでPythonを使いたい...
-
ログにserver reached MaxReque...
-
サーバー間のデータコピー(デ...
-
Linuxについて質問です。 acces...
-
shellscript内のコマンドを、su...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
AWSでSSH接続をしたいのですが...
-
Linuxのパーティション番号の変...
-
ubuntuで デイスク/deb/loopと...
-
自作のウェブサイトを友人に見...
-
ubuntuのシャットダウンが進ま...
-
[Linux初心者]Ubuntu22.04.3LTS...
-
Ubuntu系とCentOS系の違いはな...
-
Ubuntu on Xorgのログインについて
-
Windowsのローカルディレクトリ...
-
tarで纏める際に、複数場外した...
-
Linux のシェルスクリプトの強...
-
Ubuntuで数字だけのユーザーア...
-
linuxサーバーのキャッシュをク...
-
shellscript内のコマンドを、su...
-
ssl_request_logの必要性について
-
ubuntuのサーバー(virtual box)...
-
Kali Linuxで起動できない - Mi...
-
ホストオンリーアダプタで接続...
おすすめ情報