脚本块,子表达式和子shell之间有什么区别?

时间:2017-09-21 22:52:27

标签: shell powershell windows-scripting

从表面上看,这些结构在PowerShell中看起来很相似:

{}脚本阻止 - 来自 about_Script_Blocks

  

在Windows PowerShell编程语言中,脚本块是可以用作单个单元的语句或表达式的集合。脚本块可以接受参数并返回值

$() Subexpression运算符 - 来自 about_Operators

  

返回一个或多个语句的结果。对于单个结果,返回标量。对于多个结果,返回一个数组。

在下面的(设计)插图中,子表达式和调用的脚本块执行相同的功能,但我确定一个更复杂的示例可以突出显示使用其中一个的需要。在哪些情况下我们可以选择使用一个而不是另一个?选择如何影响范围和执行性能?

$foo = $(Invoke-Bar; Invoke-Baz)
$foo = &{Invoke-Bar; Invoke-Baz}

我是否理解这些表达式在同一个PowerShell进程中执行(与fork类似命令替换 $()的子shell进程的许多* nix shell不同?

是否有办法 - 甚至是在子shell /子进程中运行脚本的一部分的原因?

0 个答案:

没有答案