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

ソラリス環境でcシェルが詳しい方は教えてください
環境変数中に下記の変数が定義されてます。
LIB_HOME=/export/...
あるファイル(bbb)に下記の行があります。
Dest=$LIB_HOME/aded/...
上記のファイル(bbb)上記の行を読み取って、

set aaa = `cat bbb | grep Dest`
...
の処理で、最後に”$LIB_HOME/aded/...”の内容をdddの変数に格納してますが、
私がddd=/export/.../aded/...という形が欲しいですが、
なんかうまくいけません。ご存知の方がいらっしゃいましたら、是非お願いいたします。

A 回答 (1件)

「$LIB_HOMEが /export/... に置き換えられる」といった環境変数の置き換えが起こるのはコマンド上での話です。



一方、grep した結果は単なる「Dest=$LIB_HOME/aded/...」という「文字列」であり、
そのままでは、その中の$も$という文字にすぎません。
環境変数の参照をするためには、そこから「文字列をcshのコマンドとして解釈させる」必要があります。

具体的には、 eval コマンドを使います。
---
eval `cat bbb | grep Dest | sed -e 's/^Dest=/set aaa=/'`
---
こんな感じでしょうか。

---
Dest=$LIB_HOME/aded/...
---
という文字列から、sedの置換で

---
set aaa=$LIB_HOME/aded/...
---

を生成して、それを eval することで、上述のsetコマンドを実行して、
シェル変数 aaa に代入しています。
    • good
    • 0
この回答へのお礼

勉強になりました。ありがとうございました。

お礼日時:2010/06/18 17:24

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