• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルスクリプトのコマンド グループ化における変数の有効範囲について教)

シェルスクリプトのコマンド グループ化における変数の有効範囲について教えてください

このQ&Aのポイント
  • シェルスクリプトのコマンド グループ化における変数の有効範囲について教えてください。
  • 中括弧"{ }"を使うと親プロセス(=その実行中のプロセス)にて実行、小括弧"( )"を使うとサブシェル(=子プロセス)にて実行されると認識しています。
  • VAR01はシェル変数として作成したにも関わらず、子プロセスである( )内処理にも引き継がれているのはなぜなのでしょうか?

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

  • ベストアンサー
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.1

環境変数として引き継がれているかどうか確認するなら echo でなく、env とか getenv(3) とかを使うべきじゃないかと思う。 sh のコードは確認してないが、() {} は親シェルが面倒見てるので、$VAR01 も展開ずみで fork されてるかもしれず。

jd77
質問者

お礼

trapezium様 お返事おそくなりすみません…。 「環境変数としての引継ぎ」と「展開される変数」という別の観点で考えるべきということなのですね…。 当方、恥ずかしながら本質を的確に理解できなかったかもしれませんが、ご教示頂きありがとうございました。

その他の回答 (1)

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

いまこれ見て考えなおしてみると、fork() にしろ vfork() にしろ親プロセスのイメージが複写されるんだから、() の中でも VAR01 もシェル変数として使えてあたりまえか。

関連するQ&A