Powershell调试时候发现返回值不是期望的String,困扰后续运行好一阵子。
通过希望调用FunctionA函数,获得一个String,原来代码如下。
FunctionA ()
{
$Var1 = <some operation>
$Var1 #line mark 1
$Var2 = <Some operation to Get a String>
Write-Host $Var2
Return $Var2 #line mark 3
}
$anotherVar = FunctionA #line mark 2
实际上到此处的时候,发现$anotherVar得到的并不是一个String,通过GetType()查看,而是一个Array。其中第一个元素是$Var1的值,第二个元素是$Var2的值。
将 #line mark 1 处改成Write-Host $Var1之后,#line mark 2 处调用函数就能得到希望的string了。
如果在 line mark 3处强行转换 return [string]var2,则在 #line mark 2 处会得到一个字符串,其值为$va1和var2的连接。
教训,PowerShell的函数中任何单独变量名占一行的话,都会作为return value放进返回值中去,最终所有返回值组成一个Array返回。如果只有一个值,那么就返回这一个值。
7677

被折叠的 条评论
为什么被折叠?



