【发布时间】:2019-03-29 16:59:12
【问题描述】:
无论您想怎么称呼它,我都在尝试找出一种方法来获取现有字符串的内容并将它们评估为双引号字符串。例如,如果我创建以下字符串:
$string = 'The $animal says "meow"'
$animal = 'cat'
然后,Write-Host $string 将产生The $animal says "meow"。如何重新评估 $string 以输出(或分配给新变量)The cat says "meow"?
多么烦人...... cmets 的限制使得包含带有反引号的代码变得非常困难(如果可能的话)。下面是我为响应 zdan 而制作的最后两个 cmets 的未修改版本:
---------
实际上,在考虑之后,我意识到期望在不转义双引号的情况下对The $animal says "meow" 进行插值是不合理的,因为如果它是一个双引号字符串开头,那么如果双引号,则评估会中断引号没有转义。所以我想答案是,这是一个两步过程:
$newstring = $string -replace '"', '`"'
iex "`"$string`""
给后人的最后一条评论:我尝试了将所有内容放在一条线上的方法,几乎所有你认为可行的东西在你将它提供给 iex 后都会中断,但这个可行:
iex ('"' + ($string -replace '"', '`"') + '"')
【问题讨论】:
标签: string powershell interpolation variable-expansion