0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-03-01

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

*追記
配列を使うやり方も思いついたので、"【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記法 チートシート

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?