考虑示例脚本代码importer.ps1
#!/usr/bin/env pwsh
New-Item -Path $profile -Force | Out-Null;
function main {
if (Test-AlreadyImported) {
Write-Host "Already Imported.";
}
else {
Add-Content $profile "#My Additions" | Out-Null;
Add-Content $profile "`$env:PSModulePath = `$env:PSModulePath + `";$PSScriptRoot`";" | Out-Null;
Write-Host "Import done.";
}
}
function Test-AlreadyImported {
if (Get-Content $profile | Select-String -Quiet "#My Additions") {
Write-Host "I am true";
return $true;
}
else {
Write-Host "I am false";
return $false;
}
}
main;
运行2次后的预期输出:
I am True.
Already Imported.
运行2次后的实际输出:
I am false
Import done.
如果我将Test-AlreadyImported
函数导入Powershell并执行它,那么它将返回false
。但是在脚本中,它总是返回true
。
我在概念上犯了什么错误?
答案 0 :(得分:3)
end=""
的 end=" "
表示:创建项目,即使该项目已经存在(覆盖)。新创建的文件将为空,因此-Force
始终返回true。
如果删除New-Item
参数,则将返回预期的输出。
Test-AlreadyImported