无论你想要什么,我都试图找出一种方法来获取现有字符串的内容并将它们评估为双引号字符串.例如,如果我创建以下字符串:
$string = 'The $animal says "meow"'
$animal = 'cat'
Run Code Online (Sandbox Code Playgroud)
然后,Write-Host $string会产生The $animal says "meow".如何重新评估$ string,输出(或分配给新变量)The cat says "meow"?
多么恼人......对评论的限制使得用反引号包含代码非常困难(如果可能的话).这是我在回复下面的zdan时发表的最后两条评论的无瑕疵版本:
实际上,在考虑之后,我意识到The $animal says "meow"在没有转义双引号的情况下期望插值是不合理的,因为如果它是一个双引号字符串开始,如果双引号没有被转义,评估将会中断.所以我想答案是这是一个两步的过程:
$newstring = $string -replace '"', '`"'
iex "`"$string`""
Run Code Online (Sandbox Code Playgroud)
后人的最后一个评论:我尝试了将所有这些全部放在一条线上的方法,并且一旦你将它们提供给iex,几乎所有你想到的东西都会破坏,但是这个有效:
iex ('"' + ($string -replace '"', '`"') + '"')
Run Code Online (Sandbox Code Playgroud)