命令行分析(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
 
 
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值