如何在powershell中逃避花括号{...}?

时间:2014-12-02 19:26:24

标签: powershell escaping guid

我需要生成多行xml标记,其中包含GUID:

<xmltag_10 value="{ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ}"/>
<xmltag_11 value="{ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ}"/>

等等

我在循环中有这一行,每次迭代生成$ guid,并且它打印guid而不包围大括号

Write-Host ('xmltag_{0} value="{1}"/>' -f $i,$guid)
<xmltag_10 value="ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ"/>

添加一组花括号,我得

Write-Host ('xmltag_{0} value="Error formatting a string: Input string was not in a correct format..
"/>' -f $i,$guid)
<xmltag_10 value="{1}"/>

如何逃脱外侧花括号?我尝试使用`{{1}`}来逃避,但我得到了

$i=10
while($i -lt 21)
{
    $guid = ([guid]::NewGuid()).ToString().ToUpper();
    Write-Host ('<xmltag_{0} value="{1}"/>' -f $i,$guid)
    $i++
}

添加我的代码进行复制和测试:

{{1}}

1 个答案:

答案 0 :(得分:4)

您不需要使用-f;如果你需要使用文字花括号,这是不合适的。试试这个:

$i=10
while($i -lt 21)
{
    $guid = ([guid]::NewGuid()).ToString().ToUpper();
    Write-Host "<xmltag_$i value=`"$guid`"/>"
    $i++
}

这在双引号字符串中使用常规变量替换(但它确实需要使用`“转义双引号(反引号是转义字符)。