使用变量替换powershell中的单词

时间:2016-12-06 11:33:43

标签: windows shell powershell replace

我想编写一个脚本,该脚本从用户获取输入并将文件中的单词更改为用户输入的内容。 看到有些人这样做:

(Get-Content c:\temp\test.txt).replace('word1', 'word2') | Set-Content c:\temp\test.txt

问题是我想用变量替换一个单词,所以当我把它放在逗号之间时它不会起作用。

我希望它是这样的:

$word = read-host " please enter a word"
(Get-Content c:\temp\test.txt).replace('oldtext', '$word') | Set-Content c:\temp\test.txt

有没有办法做到这一点?

更新: 尝试过这样:

$path = "C:\Users\tc98868\Desktop\dsp.json"
$word = read-host "please enter a word"
(Get-Content $path).replace('dsp.tar.gz', $word) | Set-Content $path

它仍然无效。

1 个答案:

答案 0 :(得分:1)

$word

中删除单引号

PowerShell不会在单个引号内扩展变量,它的威胁是字符串

$word = read-host " please enter a word"
(Get-Content c:\temp\test.txt).replace('oldtext', $word) | Set-Content c:\temp\test.txt

对于PS版本2:

(Get-Content c:\temp\test.txt) -replace 'oldtext', $word | Set-Content c:\temp\test.txt