命令之前的临时分配不起作用?

命令之前的临时分配不起作用?

我期望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

临时环境变量分配生效期间命令的执行,而不是之前。特别是,它们在命令行解析过程中尚未生效。请考虑以下两个命令进行说明:

$ A=1 sh -c "echo $A"

$ A=1 sh -c 'echo $A'
1

示例命令之间的区别在于,在第一个命令中发生了变量替换 sh -c,然后他们就发生了期间的执行sh -c

从技术上讲,shell 将临时变量赋值添加到子进程的环境中;它们不会添加到 shell 的环境中。

相关内容