powershell中$ {}的含义是什么?

Cri*_*s70 8 powershell

我有一个脚本,其中函数参数表示如下:

param(
   ${param1},
   ${param2},
   ${param3}
)
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我一直无法找到这方面的文件.

以这种方式编写参数的重点是什么而不是更常见的

param(
    $param1,
    $param2,
    $param3
)
Run Code Online (Sandbox Code Playgroud)

Mik*_*ray 14

它们都只是参数声明.这两个片段是等效的.这两种语法都可以使用,但是支持的形式允许在变量名称中不合法的字符.从PowerShell 3.0语言规范:

有两种编写变量名的方法:一个支撑变量名,以$开头,后跟一个或多个几乎任意字符的大括号分隔集.和一个普通的变量名,也以$开头,后跟一组一个或多个字符来自限制性较强的集,而不是一个支撑的变量名允许的.可以使用相应的括号变量名表达每个普通变量名.

来自about_Variables

要创建或显示包含空格或特殊字符的变量名称,请将变量名称括在大括号中.这会指示Windows PowerShell按字面解释变量名称中的字符.

例如,以下命令创建并显示名为"save-items"的变量.

C:\PS> ${save-items} = "a", "b", "c" 
C:\PS> ${save-items} 
a 
b 
c
Run Code Online (Sandbox Code Playgroud)

  • 其他链接:[`Get-Help about_Variables`](https://technet.microsoft.com/library/hh847734.aspx).寻找包含特殊字符*部分的*VARIABLE NAMES. (3认同)
  • 另外,请记住,尽管变量名称可以包含空格和特殊字符,但是[这些很难使用,应该避免](https://technet.microsoft.com/en-us/library/hh847734.aspx )。 (2认同)

Mic*_*ens 14

@ MikeZ的答案在解释问题中的例子时非常正确,但就问题题目而言,实际上还有更多要说的!该${}符号实际上有2种用途; 第二个是PowerShell的隐藏宝石:

括号表示例

也就是说,如果您提供驱动器限定路径,则可以使用此括号表示法执行文件I/O操作,如MSDN页面" 提供程序路径"中所定义.

(上图来自PowerShell标点符号完整指南,这是一个免费下载的单页挂图,附在我最近在Simple-Talk.com上的文章中.)