私はa
初期ミッションの後に変化をもたらすと予想しました。しかし、私は何も得られませんでした。
tomas@tomas-Latitude-E4200:~$ echo $a
tomas@tomas-Latitude-E4200:~$ a=0 echo $a
tomas@tomas-Latitude-E4200:~$
a
以前に設定すると、同様の予期しない動作が発生しました。
tomas@tomas-Latitude-E4200:~$ a=0
tomas@tomas-Latitude-E4200:~$ a=1 echo $a
0
素晴らしい?
答え1
一時的な環境変数の割り当てが適用されます。期間以前ではないコマンドの実行。特に、コマンドラインの解析中はまだ効果的ではありません。説明のために、次の2つのコマンドを検討してください。
$ A=1 sh -c "echo $A"
$ A=1 sh -c 'echo $A'
1
コマンド例の違いは、最初のコマンドで変数置換が発生することです。今後 sh -c
、そしてそのようなことが起こりました期間実行sh -c
。
技術的には、シェルは一時変数の割り当てを子プロセスの環境に追加します。これはシェル環境に追加されません。