我正在阅读有关 bash 架构的这本书,其中一位 bash 维护者说:
shell 函数调用有不同的变量作用域,命令前面的赋值语句设置的变量有不同的临时作用域。例如,当这些赋值语句位于 shell 内置的命令之前时,shell 必须跟踪解析变量引用的正确顺序,并且链接的作用域允许 bash 这样做。
我无法弄清楚如何做到这一点。这会打印出一个空白的换行符:
foo="bar" echo $foo
Run Code Online (Sandbox Code Playgroud)
这会打印出“bar”,但该foo变量在命令完成后仍被定义,所以我不认为它是“命令范围”:
foo="bar"; echo $foo
Run Code Online (Sandbox Code Playgroud)
如何定义具有命令范围的变量?