|
今天思考了很久, WMI对于Windows来说是非常重要的一个工具. 包含了很多特性, 目前我正在看WMI关于事件和WQL的资料. PowerShell在今后也会提供WMI的供应程序(provider).
不过今天我想介绍PowerShell的单引号和反引号, 以及与Bash, Perl之间的一些对比. 学习任何事务时候, 开始用的是相似性进行记忆, 但是随着知识的积累, 你最终还会一定会引入对比记忆. 不过根据笔者在学习C, C#, bash, Perl, PowerShell的过程中, 始终认为, 首先应该以相似性为主. 这点在我学习BRE, ERE, ARE, 即基本正则表达式(废弃), 扩展正则表达式(现代正则表达式), 高级正则表达式时, 给我印象最为深刻.
如果您对bash, Perl不了解, 也没有关系, 之所以要对比, 只是为了告诉您: 伟大的思想, 表现往往是一致的. 再稍后, 我会单独来讲双引号. 其实只要记住规则, PowerShell中的引号可要比bash的简单很多了(准确说是传统的sh, 因为bash中最好使用'$()', 而避免反引号的使用).
在bash, Perl, PowerShell中, 对引号的比较往往涉及如下三个方面: 变量展开(也被称为: 变量代换, 变量篡改. ), 转义字符, 引号自身.
注1: Perl语言中, 单引号中允许出现两种转义序列: “\\”和”\’”, 通过此方法, 可以在单引号中, 引用单引号.
注2: PowerShell中, 采取了一种更加通用的方法来引用单引号, 这种规则与csv文件, 一些数据库SQL语句语法一致, 既将连续出现的两个单引号当作一个单引号来处理, 请参见例子.
在我们看例子前, 我们先来看看转义字符. 在C, C++, C#, Java, ksh, bash, Perl等等语言中, 转义字符都是反斜线(\). 通过特定语法规则, 使用转义字符可以构建被称为转义字符序列的特殊表达式. 这种表达式, 往往通知语言的词法分析模块, 对该转义序列进行特殊处理.
由于历史原因, Dos, Windows操作系统使用反斜线作为路径的分隔符, 这使得PowerShell团队做出了惊人的抉择, 使用反引号(重音符号)作为转义字符. 这种惊人的不一致, 让有类似我举例语言背景的人们可能很恶心(我的第一反应就是这样). PowerShell团队做出这种无奈的举动也是事出有因的. 如果遵照传统, 那么我们在PowerShell中使用目录时候, 恐怕都要连续使用两个反斜线才能干活, 这恐怕会让我们疯掉>_ |
|