![コマンド前の一時割り当ては機能しませんか? [コピー]](https://linux33.com/image/99952/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E5%89%8D%E3%81%AE%E4%B8%80%E6%99%82%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
私は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
。
技術的には、シェルは一時変数の割り当てを子プロセスの環境に追加します。これはシェル環境に追加されません。