■ サンプル
シェルで、変数名に val1,val2, ... って番号が振ってあって その変数をいちいち参照したくないからって探してたら eval(イーバル)があったので、メモしておく
目次
【1】eval コマンド 【2】使用上の注意 【3】サンプル 例1:Hello world 例2:ループして番号付き変数名を参照する
【1】evalコマンド
https://atmarkit.itmedia.co.jp/ait/articles/1712/22/news019.html
* 指定した文字列を評価後に連結して、現在のシェルに実行する * eval => evaluate(評価する)に由来
【2】使用上の注意
* 環境によって、対応していない可能性があるので 使用する際は、確認しておく => ちなみに、自分の環境では、 以下のサイトの「1. 変数名の前に ! を記述する」ができなくて eval の方が使えた、
https://genzouw.com/entry/2019/12/13/120003/1821/
【3】サンプル
例1:Hello world
#!/bin/bash val1="Hello World" eval echo '$val'1
出力結果
$ ./sample.sh 1 - Hello World
例2:ループして番号付き変数名を参照する
#!/bin/bash val1="Hello" val2="World" val3="Test" val4="Hi" val5="Thanks" val6="-" for((i=1; i<=13; i++)) do val=$(eval echo '$val'$i) echo "val[${i}] = ${val}" if [ ${val} = "-" ]; then echo "Found '-'. So break..." break fi done
出力結果
$ ./sample.sh val[1] = Hello val[2] = World val[3] = Test val[4] = Hi val[5] = Thanks val[6] = - Found '-'. So break...
参考文献
関連記事
シェル ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
シェル ~ 基本編・条件分岐 if / case ~
https://dk521123.hatenablog.com/entry/2015/05/01/000043
シェル ~ 基本編・ループ while / for etc ~
https://dk521123.hatenablog.com/entry/2021/08/09/000000
シェルスクリプトあれこれ
https://dk521123.hatenablog.com/entry/2018/03/03/210642
ファイルへの書き出し
https://dk521123.hatenablog.com/entry/2021/08/14/000000
シェルでSQL結果を受け取る
https://dk521123.hatenablog.com/entry/2021/08/16/231459
シェルでSQL結果を受け取る ~ エラーハンドリング編 ~
https://dk521123.hatenablog.com/entry/2021/08/20/100814
シェル ~ 文字列抽出あれこれ ~
https://dk521123.hatenablog.com/entry/2021/08/03/160901