2014-12-09 2 views
1
난 다시 참조와 지역 변수의 연결 한 문자열을 사용하여 패턴을 대체하기 위해 노력하고있어

로 교체 : 예상파워 쉘 돌아 가기 참고 문헌 및 로컬 변수

(Get-Content $nuspecPath) | Foreach-Object {$_ -replace "(<version>).+(<\/version>)", "`$1$version`$2"} | Set-Content $nuspecPath 

: 실제 <version>2.0-preview</version>

을 : 2.0-preview</version>

그러나 "$1 $version $ 2"와 같은 변수 사이에 공백을 추가하면 예상대로 <version> 2.0-preview </version>이 표시됩니다.

생각하십니까? 원래 PowerShell을 v4에 그것을 가지고

감사합니다, 댄

답변

2

흠이 나를 위해 작동합니다. 그러나 이와 같은 문제가 생기면 보통 중괄호로 해결합니다. 하나 개의 변수 끝과 다른이 시작되는 $는 {1}

$version = '2.0-preview' 
"<version>1.0.0.0</version>" -replace "(<version>).+(<\/version>)", "`${1}$version`$2" 

중괄호로 변수 이름을 넣어함으로써, PowerShell은 알 수 있습니다. 또한 원래의 접근 방식이 실제로 내 PowerShell v3 시스템 중 하나에서 작동하지 않는 것으로 확인되었습니다.

+0

감사합니다. 그것은 어떻게 든 1의 뒤쪽 참조를 포함하도록 노력하고있는 것처럼 보입니다 ... 당신의 솔루션은 잘 작동하고 다른 스레드에서 참조 된 참조가 작동합니다. :) – DanverZ