This question already has answers here:
Why can't I specify an environment variable and echo it in the same command line?
(6个答案)
三年前关闭。
对于一个环境变量,它如下所示:
bash$> foo=1 echo "$foo"
1

[编辑:如下文所述,即使这样也行不通,只是因为$foo之前是由其他一些试验设置的。应该在两次试验之间给出“unset foo”。]
但是,如果需要在启动命令的同一命令行中设置多个环境变量呢?
好像这些不起作用:
bash$> foo=1 bar=2 echo "$foo $bar"
1

bash$> foo=1 && bar=2 echo "$foo $bar"
1

bash$> (foo=1;foo=2) && echo "$foo $bar"
1

bash$> (foo=1 && foo=2) && echo "$foo $bar"
1

有可能吗?(有了剧本就很明显了)

最佳答案

我假设您不希望为当前shell设置这些环境变量,这样后续命令就不会受到这些env vars的影响。这个呢:

$ foo=1 bar=2 bash -c 'echo $foo - $bar '
1 - 2

$ echo $foo
<no output>

$ echo $bar
<no output>

注意,环境变量的范围仅限于bash子shell。如下面两个命令所示,这些env vars并没有在当前shell中结束。
如果您不担心env vars最终会出现在当前shell中,那么只要以下几点就足够了:
$  foo=1; bar=2; echo "$foo $bar"
1 2

$  echo $foo - $bar
1 - 2

关于bash - 如何在设置了多个环境变量的bash中启动命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40358967/

10-16 03:42