PowerShell中未引用$input输出Current的原因及引号行为疑问
PowerShell中$input的特殊行为解析
为什么直接echo $input会输出"Current"
$input是PowerShell的自动变量,本质是一个空枚举器对象(当没有管道输入时)。直接执行echo $input时,PowerShell会默认输出这个对象的属性——枚举器对象自带Current属性,你看到的"Current"是属性名,下方的横线是PowerShell默认表格输出的表头,而该属性的值为空。
为什么加引号后echo "$input"无输出
把$input放入双引号中时,PowerShell会触发字符串插值,此时会调用该枚举器对象的ToString()方法。对于空枚举器,ToString()会返回空字符串,因此echo "$input"没有输出。
这是$input特有的行为,不是通用引号逻辑
这种输出差异是$input作为枚举器对象的特有表现,并非PowerShell引号的通用行为。比如普通字符串变量:
PS C:\> $test = "hello" PS C:\> echo $test hello PS C:\> echo "$test" hello
两者输出完全一致。只有当变量是特殊对象(如空枚举器)时,才会出现直接输出对象属性、插值输出空的差异。
内容的提问来源于stack exchange,提问作者craig65535
相关产品推荐
相关产品推荐

