PowerShell变量`$ {$}`,`$ {^}`和`$?`

时间:2017-05-10 10:06:27

标签: powershell powershell-v5.0

有没有人知道PowerShell中使用了以下变量:

  • ${$}
  • ${^}
  • $?

据我所知,${^}${$}都与最后执行的命令行有关(如果你通过ISE将它们作为脚本运行,它们与脚本运行前执行的命令有关,而不是同一个脚本中的前一行)。区别似乎是$ {^}将命令返回到第一个空白字符,而$ {$}返回最后一个空格字符后的所有内容。即。

  • $chevron = $lastCommand -replace '^([^\s]*).*$', '$1'
  • $dollar = $lastCommand -replace '^.*?([^\s]*)$', '$1'

$?同时似乎总是返回true

当他们出现在ISE的自动完成功能中时,我发现了这些变量。

我确信这是有记录的,但我一直在努力找到合适的搜索条件来找到答案/除了噪音之外的所有内容。

3 个答案:

答案 0 :(得分:3)

通过字符名称搜索而不是字符本身工作!

http://www.neolisk.com/techblog/powershell-specialcharactersandtokens

${^}也可以写成$^。这给出了最后一个命令的第一个标记。这类似于我在问题中所说的,只有一个标记可能包含空格;而是根据解析的代码拆分事物。为了说明:'number 1', 'number 2' | Write-Host将返回number 1而不是'number

${$} / $$同样返回最后一个标记。即在运行write-host -ForegroundColor green -Object 'hello, is it me you''re looking for?'后,$$会提供hello, is it me you're looking for?

如果上一个命令成功,

$?将返回true。为了证明它的错误,运行1/0然后$?会产生错误的结果。

答案 1 :(得分:1)

$?:

$?包含上次操作的执行状态。相当于CMD shell中的%errorlevel%。另请参阅下面的$ LastExitCode。 如果上一次操作成功,则包含TRUE;如果失败,则包含FALSE。 ReadOnly,AllScope。 (https://ss64.com/ps/syntax-automatic-variables.html

其余部分也记录在案。

答案 2 :(得分:1)

  

$$

     

包含当前接收的最后一行中的最后一个标记   会话。

     

$?

     

包含上次操作的执行状态。它包含TRUE   如果最后一次操作成功,如果失败则为FALSE。

     

$ ^

     

包含会话收到的最后一行中的第一个令牌。