【发布时间】:2017-12-20 02:14:11
【问题描述】:
我想弄清楚,oneliner 是如何实现的
var=value command
实际上在 sh 中有效。我希望变量var 被传递到command 的环境中,但不应该存在于当前环境中(请不要在最后省略免责声明!)
首先,让我们在 bash 中尝试一下
#bash
$ var= #just to be sure it's empty
$ var=value echo something
. something
$ echo "$var"
.
$ var=value set something
$ echo "$var"
.
目前,它按预期工作。但是当我们去 sh 并重新输入相同的输入时,它会是这样的:
#sh
$ var=
$ var=value echo something
. something
$ echo "$var"
.
$ var=value set something
$ echo "$var"
. value
最后一个不同。 set 命令是 sh 的某种特殊情况吗?为什么我们当前环境中保存了变量var?
免责声明:我知道echo 和set 是shell 内置的,因此我们通过var=value command 传递它们的环境变量被浪费了,但我的问题只是关于语法。我的意思是,它们应该被浪费了,但是在 sh 中,当键入 set 时,变量以某种方式传递到当前环境中。
【问题讨论】: