lle*_*era 6 format powershell hashtable
答案可能很简单,但我花了半个小时仍然无法解决问题.
假设我有以下哈希表:
$hash = @{face='Off';}
Run Code Online (Sandbox Code Playgroud)
我试图做的是,沿着一些其他字符串元素输出"face"的值.
这有效:
Write-Host Face $hash['face']
=> Face Off
Run Code Online (Sandbox Code Playgroud)
但是,这不是:
Write-Host Face/$hash['face']
=> Face/System.Collections.Hashtable[face]
Run Code Online (Sandbox Code Playgroud)
不知何故,缺少空间已经影响了运算符的优先级 - 现在它正在将$ hash作为一个字符串进行评估,之后是连接[face].
试图解决这个优先级问题,我试过:
Write-Host Face/($hash['face'])
=> Face/ Off
Run Code Online (Sandbox Code Playgroud)
我现在有一个我不想要的额外空间.这有效,但我不希望额外的行重新分配:
$hashvalue = $hash['face']
write-host Face/$hashvalue
=> Face/Off
Run Code Online (Sandbox Code Playgroud)
知道如何让它作为单线工作吗?
当然,使用子表达式:
Write-Host Face/$($hash['face'])
Run Code Online (Sandbox Code Playgroud)
通常,如果我需要使用Write-Host精确控制空白,我只使用一个字符串:
Write-Host "Face/$($hash['face'])"
Run Code Online (Sandbox Code Playgroud)
是的,在这种情况下,您需要再次使用子表达式,但更多因为您根本无法$foo['bar']在字符串中包含表达式,否则;-)
顺便说一句,$hash.face同样适用于更少的视觉混乱.
| 归档时间: |
|
| 查看次数: |
5107 次 |
| 最近记录: |