• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:bashでの変数の引渡し方法)

bashでの変数の引渡し方法

このQ&Aのポイント
  • bashを使用するのが初めてなので教えてください。
  • shellscriptの中で変数を設定するのに共通変数設定用の子Shellを実行して変数を設定したいと思っていますが、うまく動きません。
  • 親shellで子Shellを実行し変数を設定する方法を教えてください。cshのときはsetenvでよかったのですが。。

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

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

ご希望のような事を行いたい場合、変数を設定するスクリプト(質問での子シェル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

steel_50130
質問者

お礼

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

その他の回答 (1)

  • galoon
  • ベストアンサー率28% (38/133)
回答No.1

子シェルから親シェルへ環境変数の引き渡しはできなかったと記憶していますが可能性があるとすれば、子シェルの部分を USER="hoge" export USER exit 0 とするぐらいでしょうか。

steel_50130
質問者

補足

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