プロが教えるわが家の防犯対策術!

shellで、変数への代入処理で困っています。

下記サンプルソースのように代入する変数自体にfor文で使用している変数が含められるようにしたいのですが、下記の通りだと実行できません。
うまく意図通りに動かす方法はございませんでしょうか?

----------------------------------------------------------------
#!/bin/sh
#変数初期化
n00=0
n01=1
n02=2
n03=3
n04=4
#メインルーチン
for i in 00 01 02 03 04 ; do
temp=`eval echo '$'"n"${i}` #変数値をtempに格納
n${i}=`expr ${temp}+1` #各変数の値を+1する。 n${i}の部分をどのようにすればよいか不明
done
----------------------------------------------------------------
# 望ましい結果
echo ${n00}
-> 1
echo ${n01}
-> 2


※制約事項
・ shのみ使用可能で、ksh,csh.bashは使用不可
・ n[0]=0,n[1]=1・・・というように配列の使用は無し

A 回答 (1件)

要は, $i の値を ?? とすると $n??=`expr $n?? + 1` という文字列を組み立てて eval すればいいはず. この文字列自体は


'$n'$i'=`expr $n'$i' + 1`'
で作れるはずなので, 結局
eval '$n'$i'=`expr $n'$i' + 1`'
でいい... のか?
もっと単純には, 必要な処理をファイルに書き出して . で読み込んでもいいのかもしれない.
    • good
    • 0
この回答へのお礼

eval '$n'$i'=`expr $n'$i' + 1`'
でうまくいきました!

ずっとeval echoでやって失敗してましたが
evalだけでいいんですね。
# evalの理解不足でした・・・

ありがとうございました!

お礼日時:2009/09/15 17:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!