タグ

ブックマーク / www.mazn.net (1)

  • evalで変数名を変数にする@bash

    シェルスクリプトで変数を使用していると、変数名を変数にしたい場合が出てきます。 しかし、以下のようなシェルを書いてもエラーになってしまいます。 #!/bin/bash HOGE_1=1 HOGE_2=2 for i in 1 2; do echo ${HOGE_$i} done ?$ ./hoge.sh ./hoge.sh: line 6: ${HOGE_$i}: bad substitution そこで、evalの登場です。evalは、引数を一度評価してから実行します。つまり、 HOGE="echo hoge" eval $HOGE を実行すると、evalは$HOGEの内容を評価し、”echo hoge”に変換します。さらにこれを実行するので、hogeと表示されます。これを使えば変数名を変数にできます。具体的には、以下のようにします。 #!/bin/bash HOGE_1=1 HOGE_

    evalで変数名を変数にする@bash
  • 1