uru*_*_na 3 bash environment-variables echo
当我在'env'命令中尝试echo变量时,什么也没得到,但是我可以使用'printenv'命令看到它:
root@devel:~# env xxx=23 echo $xxx
root@devel:~# env xxx=23 printenv | grep xxx
xxx=23
Run Code Online (Sandbox Code Playgroud)
怎么了
env xxx=23 echo $xxx
Run Code Online (Sandbox Code Playgroud)
在上面,shell $xxx在env执行之前先求值。因此,没有回声。
更具体地说,外壳看到四个字env,xxx=23,echo和$xxx。它解释env为命令名称和xxx=23,echo和$xxx作为将被传递到命令三个参数env。它$xxx 在传递给命令之前先求值env。
相比之下,在下文中,没有要评估的Shell变量。取而代之的env是有两个参数执行,xxx=23和printenv。 env设置环境变量xxx,然后执行printenv:
$ env xxx=23 printenv | grep xxx
xxx=23
Run Code Online (Sandbox Code Playgroud)
同样,请注意:
$ env xxx=23 sh -c 'echo $xxx'
23
Run Code Online (Sandbox Code Playgroud)
由于$xxx在单引号内,因此外壳程序不对其进行求值。取而代之的是运行env有四个参数:xxx=23,sh,-c,和echo $xxx。后env套环境变量xxx,它执行sh带有参数-c和echo $xxx。在$xxx当被评估sh被执行,因此它看到变量xxx。
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |