こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ソラリス環境でcシェルが詳しい方は教えてください

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

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

投稿日時 - 2010-06-03 14:23:22

QNo.5941848

すぐに回答ほしいです

質問者が選んだベストアンサー

「$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 に代入しています。

投稿日時 - 2010-06-03 15:36:12

お礼

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

投稿日時 - 2010-06-18 17:24:40

ANo.1

このQ&Aは役に立ちましたか?

20人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問