有没有人知道PowerShell中使用了以下变量:
${$}
${^}
$?
据我所知,${^}
和${$}
都与最后执行的命令行有关(如果你通过ISE将它们作为脚本运行,它们与脚本运行前执行的命令有关,而不是同一个脚本中的前一行)。区别似乎是$ {^}将命令返回到第一个空白字符,而$ {$}返回最后一个空格字符后的所有内容。即。
$chevron = $lastCommand -replace '^([^\s]*).*$', '$1'
$dollar = $lastCommand -replace '^.*?([^\s]*)$', '$1'
$?
同时似乎总是返回true
。
当他们出现在ISE的自动完成功能中时,我发现了这些变量。
我确信这是有记录的,但我一直在努力找到合适的搜索条件来找到答案/除了噪音之外的所有内容。
答案 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。
$ ^
包含会话收到的最后一行中的第一个令牌。