什么是$$和$ ^有用吗?

时间:2017-12-31 21:47:03

标签: powershell

在PowerShell中,help about_Automatic_Variables提供了足够明确的定义,但没有提供它们如何有用的示例:

  

$$包含会话收到的最后一行中的最后一个标记。

     

$^包含会话收到的最后一行中的第一个标记。

为什么这些第一个/最后一个令牌足够有用来证明这样的语言功能?

是否与TAB完成有关?

1 个答案:

答案 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