在PowerShell中,help about_Automatic_Variables
给出了足够简单的定义,但没有提供它们如何有用的示例:
$$
包含会话收到的最后一行中的最后一个标记。
$^
包含会话收到的最后一行中的第一个标记。
为什么这些第一个/最后一个令牌足够有用来证明这样的语言特征?
它与TAB完成有关吗?
这些来自他们在Unix shell中的表兄弟(see !!
in this answer)。它们在脚本中没用,但在将PowerShell用作shell时它们很有用[Citation Needed]。
例如:
C:\Users\Briantist> Get-Service Workstation
C:\Users\Briantist> Start-Service $$
它们使您不必再次键入最后一个令牌。长路径或其他复杂的令牌可能很难打字。
与$^
类似,它允许您重用第一个令牌:
C:\windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -command '[Environment]::Is64BitProcess'
# Run a 32-bit version of powershell and test that it's not 64 bit
$^ -command '<# an actual command you wanted to run in 32 bit #>'
我的猜测是,当语言最初被设计时,这些似乎更有用,但我个人认为它们最终没有那么有用。
因为从一个命令到另一个命令的管道在PowerShell中通常更惯用(并且在某些方面和情况下比在Unix中更广泛地使用),$$
的第一个示例可能更像是这样:
Get-Service Workstation
(看到输出,使用↑在线上获得上一个命令),然后:
Get-Service Workstation | Start-Service