[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/1715:55203 csv.md
-a---- 2017/3/238:
-a---- 2017/3/238:
-a---- 2017/3/2120:27331 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
powershell创建目录创建空数组时可以使⽤@(),创建只有⼀个元素的数组在唯⼀的元素前加上逗号。(否则会被解释成普通变量)
> $arr = @()
> $arr.Count
> $arr = ,"just one"
> $arr.Length
1
注释
PowerShell的注释分为单⾏注释和多⾏注释。单⾏注释使⽤#符号,多⾏注释使⽤⼀对<#和#>符号包含。
总结
本篇主要介绍⼀下PowerShell的⼀些基础操作,有了这些,你就可以⽤PowerShell命令⾏做⼀些快捷的计算了(⽐如数学计算、内存计算等)。博主后⾯会逐步地更新⾃⼰的PowerShell学习笔记,下⼀篇的内容⽬前还在构思中。
PowerShell既是⼀个命令⾏shell,⼜是⼀门语⾔。它有独⽴的语法,独⽴的包管理⼯具,独⽴的模块,⽽且有详细⽽且齐全的⽂档。PowerShell对于⾃有的东西,有着⾮常强的内在统⼀性。(这个后⾯会详述)
PowerShell为了兼容不同平台开发⼈员的习惯,还引⼊了很多Alias,光是移动位置这⼀操作就可以⽤cd、chdir、sl、Set-Location四种不同的命令达到⽬的。这是⼀个说不清楚算不算缺点的特性,好处是照顾的不同⼈的使⽤习惯,坏处是这反⽽破坏了这门语⾔的内在统⼀。
总之,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技术分享的博客,⾥⾯有许多优秀的PowerShell教程和资料,有兴趣的读者可以去看⼀下。
感谢以上的内容提供者!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论