【Shell】シェル ~ 基本編・eval ~

■ サンプル

シェルで、変数名に 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://www.it-mure.jp.net/ja/bash/eval%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6bash%E5%87%BA%E5%8A%9B%E3%82%92%E5%A4%89%E6%95%B0%E3%81%AB%E6%A0%BC%E7%B4%8D%E3%81%99%E3%82%8B/1040854613/

関連記事

シェル ~ 入門編 ~
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