命令行分析(parsing)

 
如下说明是翻译: help about_parsing 产生的帮助信息.
译者: Edengundam(马涛)
 
Parsing
 
简短描述
介绍Windows PowerShell如何去分析命令行
 
详细描述
当你在命令提示符下输入命令后, PowerShell将会把输入的文本分割成被称为符号(Token)的连续片段, 然后决定如何解释每个独立的片段. 例如, PowerShell将如下命令分解为两个符号:
 
Write-Host book
 
第一个符号就是"Write-Host," "book"是第二个符号. PowerShell在整个命令的上下文中,对每个符号独立的进行解释.
 
当处理命令是, PowerShell分析器工作在两个模式中:
 
·         表达式模式(Expression mode) – 字符串值必须使用引号括起来. 没有被引号括起来的数字将被当作数值类型(否则被解释为字符串).
·         参数模式(Argument mode) – 除非以: 美元符号($), at符号(@), 单引号(?), 双引号("), 或者一个开圆括号(()的特殊字符开头, 否则都被当作可扩展的字符串. 如果是这些特殊字符开头, 那么当作值表达式进行求值.
 
下表显示了在表达式和参数模式时, 命令处理的几个例子, 以及这些命令产生的输出结果:
 
例子
模式
结果
2+2
表达式
整数值"4"
Write-Output 2+2  
参数
字符串"2+2"
Write-Output (2+2)
表达式
整数值"4"
$a = 2+2  
表达式
整数值"4"  (赋值给$a)
Write-Output $a
表达式
整数值"4"
Write-Output $a/H 
参数
字符串"4/H"
 
每个符号都被当作某种类型的对象, 例如: 布尔类型或字符串类型. PowerShell试图根据表达式来决定对象的类型. 对象类型取决于命令的形参所期待的类型和PowerShell是否能够将实参转换为形参所期待的类型. 下表显示了几个关于根据表达式返回值进行类型赋值的例子:
 
例子
模式
结果
Write-Output !1
参数
字符串"!1"
Write-Output (!1) 
表达式
布尔值"false"
Write-Output (2)  
表达式
整数值"2"
 
当处理cmdlet参数时, PowerShell能够识别通过引号保护的字符串和没有使用引号的字符串区别. 例如, 如下命令中, -type被当作是形参的名称:
 
Get-Command -type cmdlet
 
这个例子中, "cmdlet"是传递给形参-type的实参. 然而, 下个例子中, -type被当作一个是参处理:
 
Get-Command "-type" cmdlet
 
PowerShell试图使用"-type"的值作为第一个位置参数(positional parameter), 第二个实参"cmdlet"将被当作形参名称, 因其命令失败.(译者注: 因为不存在叫"-type"的命令)
 
您还可以参考
需要了解命令语言, PowerShell命令提示符中输入:
 
help about_command_syntax
 
要了解引号保护的规则, 如输入下的命令:
 
help about_quoting_rules
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值