在PowerShell中,help about_Automatic_Variables
提供了足够明确的定义,但没有提供它们如何有用的示例:
$$
包含会话收到的最后一行中的最后一个标记。
$^
包含会话收到的最后一行中的第一个标记。
为什么这些第一个/最后一个令牌足够有用来证明这样的语言功能?
是否与TAB完成有关?
答案 0 :(得分:2)
这些来自他们在Unix shell中的表兄弟({{3}})。它们在脚本中没用,但是当使用PowerShell作为shell时,它们是有用的 [Citation Needed] 。
例如:
#define _MAX__TIME64_T 0x793406fffi64 /* number of seconds from 00:00:00, 01/01/1970 UTC to 23:59:59. 12/31/3000 UTC */
它们使您无需再次输入最后一个令牌。长路径或其他复杂的令牌可能很难打字。
与C:\Users\Briantist> Get-Service Workstation
C:\Users\Briantist> Start-Service $$
类似,它允许您重用第一个令牌:
$^
我的猜测是,当语言最初被设计时,这些似乎更有用,但我个人认为它们最终没有那么有用。
因为从一个命令到另一个命令的管道在PowerShell中通常更惯用(并且在某些方面和情况下比在Unix中使用的更广泛),第一个带有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 #>'
的示例可能更像是这样:
$$
(看到输出,使用↑来获取该行的上一个命令),然后:
Get-Service Workstation