シェル変数の中にさらに変数を入れる(csh、tcsh系)

対象:csh、tcsh

eval を使いCシェル変数の中に変数を入れる

たまに変数の中に変数を入れたくなる場面に遭遇します。その”たまに”がどんな場面だったのか記憶に無いのですが、とにかく過去にはあったので記録します。



サンプルコード variable_name.csh

#!/bin/csh


##### 変数名自体を変数に入れる
# 最終的に参照したい変数名
set x = xxx
set y = yyy

# 変数名を入れる変数
set Vname = x

# 変数 x が参照される
echo 1 '$'$Vname
eval echo 2 '$'$Vname


set Vname = y

# 変数 y が参照される
echo 3 '$'$Vname
eval echo 4 '$'$Vname

$Vname と言う変数の中にさらに変数名を入れています。10行目と17行目です。

echo で単純に参照した場合と、eval で変数を展開して参照した場合を比較して出力しています。実行結果は、下記を見てください。

実行結果

% variable_name.csh
1 $x
2 xxx
3 $y
4 yyy

eval を使うことによって、ちゃんと変数の中に変数が入っていることがわかりますね。

sh、bash 系は、↓↓↓ こちらにあります。ほとんど同じですがご覧ください。

シェル変数の中にさらに変数を入れる(sh、bash系)

200×200 高速大容量レンタルサーバ10G
mixhost

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です