【问题标题】:What does "%" (percent) do in PowerShell?“%”(百分比)在 PowerShell 中的作用是什么?
【发布时间】:2014-05-15 19:27:27
【问题描述】:

似乎 % 操作在管道之后启动脚本块,尽管about_Script_Blocks 表示 % 不是必需的。

这些都很好用。

get-childitem | % { write-host $_.Name }

{ write-host 'hello' }

% { write-host 'hello' }

但是当我们在管道之后添加一个脚本块时,我们需要先有 %。

get-childitem | { write-host $_.Name }

【问题讨论】:

  • 您可能也尝试过 Get-Help %
  • @mjolinor 这很有用。我不知道我可以在符号方面获得帮助。我看到我们也可以使用 get-help 查找 $_。太好了!
  • 为什么是近距离投票?我想改进这个问题。
  • 它也是一个模运算符!只是不在这种情况下
  • @Cole9350 这是添加到当前答案的有用项目。

标签: powershell syntax


【解决方案1】:

在 cmdlet 的上下文中使用时(例如您的示例),它是 ForEach-Object 的别名:

> Get-Alias -Definition ForEach-Object

CommandType     Name                                                Definition
-----------     ----                                                ----------
Alias           %                                                   ForEach-Object
Alias           foreach                                             ForEach-Object

在等式的上下文中使用时,它是modulus operator

> 11 % 5

1

作为模数运算符,% 也可以用于assignment operator (%=):

> $this = 11
> $this %= 5
> $this

1

【讨论】:

  • 一旦它还包含 % 角色作为不同上下文中的模运算符,我会将其标记为答案。
  • 添加方程和赋值运算符示例
  • 在 Foreach-Object 的情况下,我建议不要使用“%”符号——这会让人们更难阅读/维护你的代码——尤其是那些刚接触 PS 的人。让我们面对现实吧,拿起PS的人越多越好。
  • 在MSDN官方文档中哪里可以找到ForEach-Object的含义?
  • 我不同意 Simon Catlin,按照这种逻辑,我们都应该使用汇编,因为其余的只是语法糖
【解决方案2】:

PowerShell - Special Characters And Tokens 的帖子提供了多个符号的描述,包括 %

% (percentage)

1. Shortcut to foreach.
Task: Print all items in a collection.
Solution.
... | % { Write-Host $_ }

2. Remainder of division, same as Mod in VB.
Example:
5 % 2

【讨论】:

  • @ShaunLuttin:该值是一个链接,描述了多个特殊字符,包括%
  • 技术上它是ForEach-Object 的别名。 ForEach 也是 ForEach-Object 的别名 - 除非在语句开头使用,它是循环控制关键字(如 while)。
【解决方案3】:

% 可以替换Get-ChildItem | ForEach-Object { write-host $_.Name } 没有%ForEach-Object 将无法工作。

【讨论】:

    猜你喜欢
    • 2019-05-18
    • 1970-01-01
    • 2015-02-18
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多