【问题标题】:Powershell equivalent to $_ in bashPowershell 相当于 bash 中的 $_
【发布时间】:2017-12-06 12:30:18
【问题描述】:

在 bash 中,要从最后一个命令中获取参数,我们调用 $_。 我已经搜索但在 PowerShell 中找不到与 bash 的 $_ 等效的内容? 示例:

$ mkdir 20171206
$ cd $_

现在 bash 当前工作目录将是 20171206,我正在尝试通过 PowerShell 来实现。

有可能吗?

【问题讨论】:

  • 该命令的 PowerShell 等效项是 mkdir 20171206 | cd
  • 您并没有真正解释 bash 的 $_ 的作用。我会先看看Get-Help about_Automatic_Variables
  • 同意@BaconBits,但 Ansgars 的评论并不是为了回答这个问题,而是展示了如何以 PowerShell 的方式进行操作。恕我直言,重要的是你使用一种语言的功能而不是尝试重建另一种语言的功能。
  • 所以,我们可以通过某种方式实现它。这就是我所需要的。有一个伟大的一天的团队。

标签: bash shell powershell sh automatic-variable


【解决方案1】:

显然,$_ 在 bash 中的意思是“上一个命令的最后一个参数”。

最接近的近似值是$$,即defined

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

但是,我不知道这是否意味着 PowerShell 的 $$ behaves like bash's $_ or if it behaves like bash's !$。我认为它更接近于!$,但我目前在我的 Chromebook 上,无法确认。

编辑:就像!$

PS C:\> Get-Location > a.txt
PS C:\> $$
a.txt

所以没有直接等同于 bash 的$_

但请记住,PowerShell 强烈支持对象和管道,因此保留以纯文本和空格分隔的标记来考虑所有内容的 bash 约定也不会为您服务。在 PowerShell 中执行此操作的最佳方法是:

mkdir 20171206 | cd

或者,如果您没有使用任何默认的 PowerShell 别名和函数(例如,我不确定 Linux PowerShell 上保留了什么):

New-Item 20171206 -ItemType Directory | Set-Location

【讨论】:

    猜你喜欢
    • 2011-12-09
    • 2022-11-10
    • 2023-02-02
    • 2019-12-31
    • 1970-01-01
    相关资源
    最近更新 更多