サブシェルで実行した後に変数が消えたいときに呼び出されるスキルは何ですか?
$ (lookForMe=wee && find -type d -name "${lookForMe}_*")
$ echo $lookForMe
$
答え1
シェル変数は常に現在のシェルに属します。サブシェルを作成すると、これは別のシェルなので、一意の変数セットを持ちます。あなたの場合はsubshellを実行しているので、(......)
bashは最初に親シェルのすべての変数のコピーを取得するようにサブシェルを準備しますが、すでにそのような場合です。特に、変数の変更はサブシェルの終わりにはコピーされず、サブシェルから生成された変数も親シェルに戻されません。
これはない技術しかし、それはすべてです。強く打つ言語はすでに定義されているので、名前を求めることは意味がありません。
全体的なアイデアは、ほとんどのプログラミング言語のローカル変数の概念といくつか似ているため、このプロパティの活用を「ローカル変数の作成」と命名したい場合がありますが、次の事実を無視するので、そうすることは消極的です。少なくとも呼び出しサイトでは、(...)
親シェルの変数が子シェルの変数を初期化するために使用されます。
答え2
「サブシェルでジョブを実行する」以外には特別な名前はありません。これは、子シェルの環境に対する変更が親シェル環境に反映されないことを意味します。
サブシェル内で生成された変数を「サブシェル環境の変数」と呼ぶことができます。