PowerShell调试函数返回值的教训

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返回。如果只有一个值,那么就返回这一个值。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值