下面的 bash 咒语到底发生了什么?
x=10 echo $x
Run Code Online (Sandbox Code Playgroud)
我的印象是 bash 上的命令可以使用或来链接&&
,但不能简单地用空格分隔。仅当第一个命令是分配时,上述内容才有效。例如失败但工作得很好。||
;
ls ls
foo=zoo ls
在这个 SO 答案中可以找到上述风格的真实案例。
这是一种特殊的语法结构,用于调用带有变量集的命令。这意味着变量的范围仅限于该命令。
例如,这个命令:
x=10 sh -c 'echo $x'
Run Code Online (Sandbox Code Playgroud)
与另一个命令完全等效:
( export x=10; sh -c 'echo $x' )
Run Code Online (Sandbox Code Playgroud)
您给出的示例 ( x=10 echo $x
) 不是此构造的适当示例,因为变量在调用$x
之前已进行评估。echo