无论您想怎么称呼它,我都在尝试找出一种方法来获取现有字符串的内容并将它们评估为双引号字符串。例如,如果我创建以下字符串:
$string = 'The $animal says "meow"'
$animal = 'cat'
然后,Write-Host $string
会产生The $animal says "meow"
. 如何重新评估 $string 以输出(或分配给新变量)The cat says "meow"
?
多么烦人……注释的限制使得包含反引号的代码变得非常困难(如果可能的话)。这是我在下面回复 zdan 时所做的最后两条评论的未修改版本:
----------
实际上,经过考虑,我意识到在The $animal says "meow"
不转义双引号的情况下期望进行插值是不合理的,因为如果它是一个以双引号开头的字符串,那么如果不转义双引号,评估就会中断。所以我想答案是,这是一个两步过程:
$newstring = $string -replace '"', '`"'
iex "`"$string`""
给后人的最后一条评论:我尝试了将所有这些都放在一条线上的方法,几乎所有你认为可行的东西一旦你将它提供给 iex 就会中断,但这个可行:
iex ('"' + ($string -replace '"', '`"') + '"')