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

解決済みの質問

bashでの変数の引渡し方法

bashを使用するのが初めてなので教えてください。
shellscriptの中で変数を設定するのに共通変数設定用の子Shellを実行して変数を設定したいと思っていますが、うまく動きません。どのように設定したらいいのでしょうか。cshのときはsetenvでよかったのですが。。

親shell(hoge.sh)
--------------
#!/bin/sh
./setenv.sh #変数設定用子Shell

echo $USER
exit 0
--------------

子Shell(setenv.sh)
--------------
#!/bin/sh
USER="hoge"
exit 0
--------------

実行すると以下のようになります。
$./hoge.sh
USER: not found

投稿日時 - 2005-10-14 13:42:47

QNo.1713207

すぐに回答ほしいです

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

ご希望のような事を行いたい場合、変数を設定するスクリプト(質問での子シェルsetenv.sh)を「. filename」のような感じでシェルスクリプト(質問での親シェルhoge.sh)で指定します。

ちなみに「. filename」と指定すると、filenameで指定されたファイルから1行ずつ読み出し実行してくれます。

質問にあるシェルスクリプトを修正すると下記のような感じになります。

○hoge.sh
--------------
#!/bin/sh
. ./setenv.sh #変数設定用子Shell

echo $USER
exit 0
--------------

○setenv.sh
--------------
#!/bin/sh
USER="hoge"
--------------

%./hoge.sh
hoge

投稿日時 - 2005-10-14 14:41:07

お礼

できました!!ありがとうございます。
子Shellの中ではexitもいらないんですね。
勉強になりました。

投稿日時 - 2005-10-14 15:13:10

ANo.2

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

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

回答(2)

ANo.1

子シェルから親シェルへ環境変数の引き渡しはできなかったと記憶していますが可能性があるとすれば、子シェルの部分を

USER="hoge"
export USER
exit 0

とするぐらいでしょうか。

投稿日時 - 2005-10-14 14:03:11

補足

galoonさん、
回答ありがとうございます。
exportを使用しても結果は一緒でした。
>子シェルから親シェルへ環境変数の引き渡しはできなかったと記憶していま

もしそうなら他の代替案はあるのでしょうか?皆さんはどうしているのでしょうか?

投稿日時 - 2005-10-14 14:33:09

あなたにオススメの質問