bad*_*adp 8 environment-variables
我想我有一个巨大的脑放屁。我希望
env foo=bar echo $foo
Run Code Online (Sandbox Code Playgroud)
...打印bar
,但我得到一个空行。笏。
如果我使用 bash 语法,也会发生同样的情况:
foo=bar echo $foo
Run Code Online (Sandbox Code Playgroud)
最近回答了一个类似的问题:符号在该行中定义符号之前在行中进行评估,因此有必要将符号的定义和使用拆分为分隔行。
根据评论提示,您可以这样做:
foo=bar bash -c 'echo $foo'
Run Code Online (Sandbox Code Playgroud)
它首先分配一个值foo
并将其作为可以打印的环境变量传递给新进程。
您可以在 POSIX Shell 命令语言令牌识别 中阅读有关它的更多信息。
跟进@mikeserv评论:
shell 应该从文件中的行读取它的输入,在交互式 shell 的情况下从终端读取,或者在 sh -c 或 system() 的情况下从字符串读取它的输入。
一旦标记被定界,它就会根据 Shell Grammar 中的语法要求进行分类。