countなどの一部の変数を含む構成ファイルを実行するデフォルトのシェルがあります。メインシェルを呼び出すと、構成ファイルがロードされ、他のシェルスクリプトが呼び出されます。内部シェルスクリプトがデフォルトのシェルスクリプトがロードした変数の数にアクセスできるようにしたいです。どうすればいいですか?エクスポートしようとしましたが、最初のレベルの変数をインポートするのにのみ役立ちました。
答え1
export
プロセスで定義された変数は子プロセスから読み取ることができますが、子プロセスで変数が変更されると、各プロセスには独自の環境変数があるため、呼び出し側プロセスでは変数は変更されません。おそらく解決策は、サブシェルが出力を書き込み、呼び出し側シェルが出力を読み取ることです。
count=$(subprocess)
答え2
内部スクリプトを別々のプロセスと呼ぶのではなく、埋め込みスクリプトと呼んでください。
. /path/to/inner_script
(点)組み込み関数(bashでもこの名前を使用することもできます)を介して.
読み取られたスクリプトは、source
呼び出し元と同じシェル環境で実行されます。特に、彼らは変数を共有します。