Help us understand the problem. What is going on with this article?

【シェルスクリプト】 for文を使って名前に数字が入っている変数を順番に読み込む

番号順に並んだ変数をどうやって読み込むかで少し悩んだので残しておきます。

*追記
配列を使うやり方も思いついたので、"【sh】for文を使って配列にした変数を読む
"
にまとめました。

状況

次のような変数に値が入っています。

var1=1
var2=6
var3=13
var4=18
var5=24
var6=26

これらを順番に取り出したかったわけです。

方法

シェルスクリプトに精通していないので、文字列を変数と思わせる方法(日本語が思いつかない)で悩みました。

for i in `seq 6`
do
    ## 変数の名前を作成
    num="var${i}"
    ## 上で作った名前と同じ変数の値をvarに代入
    eval var='$'${num}
    echo $var
done

結果

1
8
13
18
24
26

ちなみに、evalは文字列を評価してから連結するコマンドだそうで、、、
eval '$'$変数名で「変数の内容」を変数として変数名として参照できるそうです。ありがたい。
  

2桁表示
ついでに、値を2桁整数で表示したいときは

var=`printf %02d ${var}`

を追加すれば、

01
08
13
18
24
26

となります。

あとがき

今回のやり方を調べるにあたって、下記のサイトを参考にさせていただきました。
bashで文字列を変数名に展開する方法
また、初投稿なので、下記サイトで投稿の仕方を参考にしました。非常に助かりました。
Markdown記法 チートシート

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした