单引号与双引号,以及嵌入语句
- 单引号括起字符串里面的$不进行演算
- 双引号括起字符串里面的$进行演算
- 脱字符`可以转义单、双引号,及$符号
- 双引号里的$var进行演算时,var只能是一个普通变量,如果要在双引号里嵌入需要演算出结果的语句,则需要通过"$(expressions)"的形式
- 双引号里的$var,如果var后面跟着一个冒号,则var会被当做一个namespace进行解释,并继续解析冒号后面的token,然后把var:token当做一个完整的变量来进行演算,但若作用域不是我们的本意,则需要用${var}的形式明确告诉解释器var是一个变量,而不是namespace
- 结合上一条,若$var是一个变量,则"${var}"与"$($var)"等价,即用"$(expressions)"总是没错的
$cwd = (Get-Item .).FullName
$uproject_file = Get-ChildItem . -Filter "*.uproject" | Select-Object -First 1
if ($null -eq $uproject_file) {
Write-Host "uproject file not found."
Exit -1
}
$uproject = $uproject_file | Get-Content -Raw | ConvertFrom-Json
$project_name = $uproject_file.BaseName
Write-Host "Project name is $project_name"
$modules = @(
@{
"Name" = "$project_name"
"Type" = "Runtime"
"LoadingPhase" = "Default"
}
)
#$modules是个数组,里面的元素是一个字典
if ($null -eq $uproject.Modules) {
Write-Host "Modules field not exists."
$uproject | Add-Member -Name "Modules" -Value $modules -MemberType NoteProperty
Write-Host "Adding [Modules] field:",($uproject.Modules| ConvertTo-Json)
<# save uproject file #>
$uproject | ConvertTo-Json -Depth 3 | Out-File $uproject_file.FullName
}
else {
<# Action when all if and elseif conditions are false #>
$project_name = $uproject.Modules[0].Name
}