[PowerShell入门]变量、赋值、算术运算、类型转换、数组、注释

PowerShell入门

前言

PowerShell这东西发布时间也不算短了,可是给我的感觉一直不冷不热的。博主是上了大学才接触的编程领域,到了大二才知道有这个东西的存在,之前看的博客、新闻基本没有提到的。16年下半年,微软宣布PowerShell开源,这才陆陆续续有看到相关的报道。

之前有一次想着:既然是微软的东西,应该不差吧。然后试着用了一下,发现有些复杂,不是当时的水平可以吃透的,遂放弃。直到最近想充实一下自己的技术栈,才重新拾起这项技术。然后发现这玩意其实意外地好用…

强烈推荐使用Windows系统的读者把默认的命令行程序改为PowerShell,这样可以使用Shift+鼠标右键的方式在特定目录快速启动PowerShell。


变量

PowerShell里面定义变量的方法比较复杂,基本规则如下:

  1. 变量以$符号开头
  2. 变量名可以包含数字、字母和下划线,数字可以作为变量的第一个字符(不包括$符)
  3. 无需指定类型
  4. 大小写不敏感
> $hello = "Hello world!"

> $hello
Hello world!

> $HELLO
Hello world!

> $1 = "One"

> $1
One

另外,如果变量名里面有特殊符号,可以使用{花括号}将变量名包含起来,以免造成混乱。

在变量名中使用引号:

> $"s" = "s"
$s : 无法将“$s”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ $"s" = "s"
+ ~~~~
    + CategoryInfo          : ObjectNotFound: ($s:String) [], CommandNotFoundE 
   xception
    + FullyQualifiedErrorId : CommandNotFoundException


> ${"s"} = "s"

> ${"s"}
s

在变量名中使用$符号:

> ${$ is dollar} = "DOLLAR"

> ${$ is dollar}
DOLLAR

赋值

因为PowerShell是面向对象的,所以你可以用=符号给变量赋值任何东西,包括cmdlet。

> $ls = Get-ChildItem

> $ls


    目录: Desktop\pstest


Mode                LastWriteTime         Length Name                          
----                -------------         ------ ----                          
-a----        2017/3/17     15:55            203 csv.md                        
-a----        2017/3/23      8:49              5 hello.txt                     
-a----        2017/3/23      8:50             14 helloutf.txt                  
-a----        2017/3/21     20:27            331 testtb.py 

可以一次给多个变量赋同一个值$a = $b = 1,但是如果用$a, $b = 1会导致$b无值。

PowerShell还支持类似Python元组的交换赋值:

> $a = 1

> $b = 2

> $a, $b = $b, $a

> $a
2

> $b
1

算术运算

PowerShell支持的算术运算符包括+(加) -(减) *(乘) /(除) %(模)。支持0x开头的十六进制数字。支持以KB MB GB TB PB结尾的字节数运算。

注意:PowerShell中的整数相除不会舍去小数部分。

> 1mb/1kb
1024

> 10 -eq 0xa
True

> 3/2
1.5

另外,PowerShell也支持++、–、+=、-=、*=、/=、%=这类运算符。


类型转换

PowerShell中有两种方式可以实现类型转换。一种是通过直接在值或者变量前加上[类型],另一种是通过-as运算符实现类型转换。

在PowerShell中,0、空字符串”“、空数组@()、空哈希表@{}、$null等值会被转换为False。

> [bool]0
False

> 0 -as [bool]
False

数组

PowerShell中用逗号分隔不同的值创建数组。数组中可以包含不同类型的值。可以使用变量名.Count或者变量名.Length的形式获取数组长度。

> $arr = 1, "two", 3

> $arr
1
two
3

当数组为连续数字数组时,可以使用..符号快捷创建。

> $arr = 1..5

> $arr
1
2
3
4
5

创建空数组时可以使用@(),创建只有一个元素的数组在唯一的元素前加上逗号。(否则会被解释成普通变量)

> $arr = @()

> $arr.Count
0

> $arr = ,"just one"

> $arr.Length
1

注释

PowerShell的注释分为单行注释和多行注释。单行注释使用#符号,多行注释使用一对<#和#>符号包含。


总结

本篇主要介绍一下PowerShell的一些基础操作,有了这些,你就可以用PowerShell命令行做一些快捷的计算了(比如数学计算、内存计算等)。博主后面会逐步地更新自己的PowerShell学习笔记,下一篇的内容目前还在构思中。

PowerShell既是一个命令行shell,又是一门语言。它有独立的语法,独立的包管理工具,独立的模块,而且有详细而且齐全的文档。PowerShell对于自有的东西,有着非常强的内在统一性。(这个后面会详述)

PowerShell为了兼容不同平台开发人员的习惯,还引入了很多Alias,光是移动位置这一操作就可以用cd、chdir、sl、Set-Location四种不同的命令达到目的。这是一个说不清楚算不算缺点的特性,好处是照顾的不同人的使用习惯,坏处是这反而破坏了这门语言的内在统一。

总之,PowerShell尽管还有不少缺陷,而且难以学懂,但确实是一个不错的工具。值得一学!


我的其他PowerShell入门相关文章:

[PowerShell入门]关系运算和逻辑运算
[PowerShell入门]选择结构和循环结构


后记

我一直对微软的东西抱有极高的热情。光Windows Phone系统的手机就收藏了好几台,有诺基亚的925、635、830,还有HTC的8s,之前大一时候还收破烂买了一台海信的NANA。平板则入了SurfaceRT。前几个月又入了台SurfaceBook。

在我的意识里,微软出品基本就代表了精品。很多人说苹果出品必属精品,可是我不这么认为,苹果的产品虽然精致,但是每次看苹果的新品内心都基本毫无波澜。不过其实都是个人的选择罢了。

说了那么多没用的,只是想表达一种我对于“微软出品”的情感。从Windows Phone到Cotana到Windows 10,从Surface到SurfaceBook到SurfaceStudio,从VisualStudio到VisualStudioCode,从C#到F#到TypeScript到PowerShell,微软每次都能给我带来惊喜。

每次都会让我大喊:“卧槽!吊!”,这就是微软。而我学习PowerShell,学习.NET的脚步也会一直持续下去。


参考资料:
pstips
PowerShell单行注释、多行注释、块注释的方法

pstips是国内的一个专注于PowerShell技术分享的博客,里面有许多优秀的PowerShell教程和资料,有兴趣的读者可以去看一下。

感谢以上的内容提供者!

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值