プロが教える店舗&オフィスのセキュリティ対策術

初めまして

仕事で簡単なシェルを作成していますが、ちょっと困っています。お分かりになる方がいらっしゃいましたら、お知恵をお貸しください。

外部ファイルとして変数を記述したファイルを作成しました。このファイルの内容を参照し、他で定義した変数を割り当てたいのですが、どうしても外部ファイルに記述した変数の文字を変数として認識してくれません。

書き方がおかしいのでしょうか?

$ls
MSG.sh MSG.txt
-----
$cat MSG.txt
Test $MSG1
-----
$cat MSG.sh
#!/bin/sh
MSG1=1

MSG=`cat MSG.txt`
echo $MSG
-----
$./MSG.sh
$Test $MSG1 <--変数でなく文字として認識されてしまうう。

---希望としてはこの様に表示して欲しい---
$Test 1

よろしくお願いします。

A 回答 (1件)

eval を使って、$MSG をシェルスクリプトの行のごとく実行(評価)すれば


希望の動作をさせられます。

たとえば、

a) eval echo $MSG

b) MSG2=`eval echo $MSG`
echo $MSG2

のようにします。
eval $MSG
と書くと、 "Test 1" を実行しようとします。
# そしてたぶん「Test なんてコマンドはありませんよ」といった
# エラーメッセージを表示することでしょう。
    • good
    • 0
この回答へのお礼

evalコマンドを使用することによって、希望する動作を実現できました。

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

お礼日時:2005/11/15 09:16

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