【发布时间】:2011-02-17 21:41:19
【问题描述】:
我正在尝试用 Powershell 解析做一些不寻常的事情。基本上,我有一个包含变量名称的文字字符串。我想做的是告诉powershell“嘿,我有一个字符串(可能)包含一个或多个变量名——动态解析它,用它们的值替换变量名”
这是我理解解析工作的教科书方式:
PS C:\> $foo = "Rock on"
PS C:\> $bar = "$foo"
PS C:\> $bar
Rock on
如果我现在更改 $foo 的值:
PS C:\> $foo = "Rock off"
PS C:\> $bar
Rock on
这里没有惊喜。 $bar 的值在赋值时就被解析了,不会因为 $foo 的值改变而改变。
好的,那么如果我们给 $bar 分配一个单引号呢?
PS C:\> $foo = "Rock on"
PS C:\> $bar = '$foo'
PS C:\> $bar
$foo
这很好,但是有没有办法让 Powershell 按需解析它?例如:
PS C:\> $foo = "Rock on"
PS C:\> $bar = '$foo'
PS C:\> $bar
$foo
PS C:\> Some-ParseFunction $bar
Rock on
PS C:\> $foo = "Rock off"
PS C:\> Some-ParseFunction $bar
Rock off
我为什么要这样做?我希望能够从文件(或某些数据源)中获取内容并动态解析它:
PS C:\> $foo = "Rock on"
PS C:\> '$foo with your bad self.' | out-file message.txt
PS C:\> $bar = (get-content message.txt)
PS C:\> $bar
$foo with your bad self.
PS C:\> Some-ParseFunction $bar
Rock on with your bad self.
这可以吗?我意识到我可以为搜索/替换已知名称进行一些模式匹配,但我宁愿让 Powershell 重新解析字符串。
谢谢!
【问题讨论】:
标签: parsing powershell