- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルスクリプトのコマンド グループ化における変数の有効範囲について教)
シェルスクリプトのコマンド グループ化における変数の有効範囲について教えてください
このQ&Aのポイント
- シェルスクリプトのコマンド グループ化における変数の有効範囲について教えてください。
- 中括弧"{ }"を使うと親プロセス(=その実行中のプロセス)にて実行、小括弧"( )"を使うとサブシェル(=子プロセス)にて実行されると認識しています。
- VAR01はシェル変数として作成したにも関わらず、子プロセスである( )内処理にも引き継がれているのはなぜなのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
環境変数として引き継がれているかどうか確認するなら echo でなく、env とか getenv(3) とかを使うべきじゃないかと思う。 sh のコードは確認してないが、() {} は親シェルが面倒見てるので、$VAR01 も展開ずみで fork されてるかもしれず。
その他の回答 (1)
- trapezium
- ベストアンサー率62% (276/442)
回答No.2
いまこれ見て考えなおしてみると、fork() にしろ vfork() にしろ親プロセスのイメージが複写されるんだから、() の中でも VAR01 もシェル変数として使えてあたりまえか。
お礼
trapezium様 お返事おそくなりすみません…。 「環境変数としての引継ぎ」と「展開される変数」という別の観点で考えるべきということなのですね…。 当方、恥ずかしながら本質を的確に理解できなかったかもしれませんが、ご教示頂きありがとうございました。