我需要生成多行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}}
答案 0 :(得分:4)
您不需要使用-f
;如果你需要使用文字花括号,这是不合适的。试试这个:
$i=10
while($i -lt 21)
{
$guid = ([guid]::NewGuid()).ToString().ToUpper();
Write-Host "<xmltag_$i value=`"$guid`"/>"
$i++
}
这在双引号字符串中使用常规变量替换(但它确实需要使用`“转义双引号(反引号是转义字符)。