当前位置: 首页 > 知识库问答 >
问题:

$($variableName)在PowerShell中的可扩展字符串中是什么意思?

伯茂才
2023-03-14

我在网上看到了许多使用这个的示例脚本。最近,我在自动化TFS的脚本中看到了它:

[string] $fields = "Title=$($taskTitle);Description=$($taskTitle);Assigned To=$($assignee);"
$fields += "Area Path=$($areaPath);Iteration Path=$($iterationPath);Discipline=$($taskDisciplineArray[$i]);Priority=$($i+1);"
$fields += "Estimate=$($taskEstimateArray[$i]);Remaining Work=$($taskRemainingArray[$i]);Completed Work=$($tasktaskCompletedArray[$i])"

据我所知,$($tasktile)似乎等同于$tasktile。我错过什么了吗?有什么理由使用括号和额外的美元符号吗?

共有2个答案

云承弼
2023-03-14

为了补充Amith George的有用答案,请提供更多背景信息:

据我所知,$($tasktile)似乎等同于$tasktile

事实上,在"..."的上下文中,一个可扩展的字符串(内插字符串):

>

  • 您不需要$(…) 带有简单变量引用,如$tasktile$env:HOME

    • 有时您必须(或可能选择)使用${tasktile}${env:HOME}-即{…} 围绕标识符-以便从字符串中的后续字符中消除变量名称的歧义

    你确实需要$(...)做任何其他事情:

    • 进入财产;e、 g.:
      “计数为:$($var.count)”

    总之:

    >

  • $(…) ”中的code>,并允许您在“”中嵌入整个语句 ;通常,当对字符串求值时,$(…) 部分替换为嵌入语句的(字符串化)输出。

    如果您不想考虑何时$(…)是和不是必需的,您可以选择始终使用它(例如,$($taskTitle)),但请注意,它的键入和视觉上的“噪音”非常麻烦。

    • 注意:存在一个边缘情况,其中$($var)的行为与$var/${var}的行为不相同,即如果$var是一个集合(实现<代码>[System.收藏。[CNNVD])碰巧只包含一个项目-请参阅下面PetSerAl的注释。

    除非被引用变量的/embedded语句的值已经是字符串,否则将使用。NET。ToString()方法,值得注意的是,支持区分区域性的字符串化的类型是使用不变区域性字符串化的,粗略地说,它类似于美国英语格式;e、 例如,“$(1.2)”总是产生1.2,即使在是小数点的文化中也是如此;更多信息请参见我的答案。

    文档:

    $(...)的官方名称是子表达式运算符,如获取帮助about_Operators中(简洁地)所述,尽管那里的解释没有讨论运算符在可扩展字符串上下文中的具体用途。

    相反,获取有关“引用”规则的帮助,其中讨论了包括可扩展字符串在内的字符串文字,显示了$(…)的示例 仅在可扩展字符串的上下文中使用。

  • 井镜
    2023-03-14

    语法有助于计算其中的表达式。

    $arr = @(1,2,3)
    
    $msg1 = "$arr.length"
    echo $msg1 # prints 1 2 3.length - .length was treated as part of the string
    
    $msg2 = "$($arr.length)"
    echo $msg2 # prints 3
    

    你可以在http://ss64.com/ps/syntax-operators.html

     类似资料:
    • 问题内容: 我在我的应用程序中使用了express以及body-parser。 但是,express 4.0中的“扩展”是什么意思? 我找到了这个 但是,我仍然不能理解它的含义。 问题答案: 如果为,则不能发布“嵌套对象” 如果为,则可以按照自己喜欢的方式进行操作。

    • 本文向大家介绍PowerShell中的转义字符是什么?,包括了PowerShell中的转义字符是什么?的使用技巧和注意事项,需要的朋友参考一下 PowerShell中转义字符是`,向后撇号(backward apostrophe,是tab键上面的按键,不是单引号),例如: 会输出$env:processor_architecture=AMD64 当然还有一个转义字符是在正则表达式(Regular

    • 问题内容: 在Python中是什么意思?下面的代码有什么作用? 例如… 问题答案: 这是一种字符串格式语法(它是从C借用的)。 请参阅“ PyFormat”: Python支持将值格式化为字符串。尽管这可能包含非常复杂的表达式,但最基本的用法是使用占位符将值插入字符串。 编辑: 这是一个非常简单的示例: 该令牌允许我插入(和潜在的格式)的字符串。请注意,令牌被替换为符号后传递给字符串的任何内容。还

    • 由于是16位,我猜这里的“Unicode”是指UTF-16,但我一点也不确定。 更新:我注意到UTF-16的维基页面上说“Unicode”是我们现在所知道的UCS-2的旧术语。然而,它也说Java现在使用UTF-16。因此,我仍然怀疑JNI文档中的“Unicode”是指标准的UTF-16,但我通常不使用JNI甚至Java,所以我希望有人觉得权威来插话。

    • ES6加强了对Unicode的支持,并且扩展了字符串对象。 字符的Unicode表示法 JavaScript允许采用\uxxxx形式表示一个字符,其中“xxxx”表示字符的码点。 "\u0061" // "a" 但是,这种表示法只限于\u0000——\uFFFF之间的字符。超出这个范围的字符,必须用两个双字节的形式表达。 "\uD842\uDFB7" // "

    • 问题内容: 我在不可变字符串上编写了以下代码。 输出: 此处变量的值a已更改(许多人说不能更改不可变对象的内容)。但是,一句话到底是什么String是不变的呢? 问题答案: 在进一步探讨不变性之前,让我们在得出任何结论之前先了解一下类及其功能。 这是如何工作的: 与往常一样,这将创建一个包含的字符串”knowledge”并为其指定一个reference str。很简单?让我们执行更多功能: 让我们