[PowerShell入门]变量、赋值、算术运算、类型转换、数组、注释
2017-03-23 12:28
856 查看
PowerShell入门
前言
PowerShell这东西发布时间也不算短了,可是给我的感觉一直不冷不热的。博主是上了大学才接触的编程领域,到了大二才知道有这个东西的存在,之前看的博客、新闻基本没有提到的。16年下半年,微软宣布PowerShell开源,这才陆陆续续有看到相关的报道。之前有一次想着:既然是微软的东西,应该不差吧。然后试着用了一下,发现有些复杂,不是当时的水平可以吃透的,遂放弃。直到最近想充实一下自己的技术栈,才重新拾起这项技术。然后发现这玩意其实意外地好用…
强烈推荐使用Windows系统的读者把默认的命令行程序改为PowerShell,这样可以使用Shift+鼠标右键的方式在特定目录快速启动PowerShell。
变量
PowerShell里面定义变量的方法比较复杂,基本规则如下:变量以$符号开头
变量名可以包含数字、字母和下划线,数字可以作为变量的第一个字符(不包括$符)
无需指定类型
大小写不敏感
> $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教程和资料,有兴趣的读者可以去看一下。
感谢以上的内容提供者!
相关文章推荐
- c语言算术运算表达式与赋值运算表达式的类型转换规则
- JAVA关键字、标识符、注释、常量、进制的转换、变量、数据类型的转换、运算符(赋值、比较、逻辑、位、移位、三元)
- 6.1bash编程入门值变量类型、for循环和算术运算
- (5)java语言基础(注释,关键字,标识符,常变量,类型转换,转义字符、位运算和一些注意的运算)
- JAVA基础知识思维导图:unit01_开发环境,变量,基本类型及转换,数学运算,流程控制,数组
- 变量_类型转换_ 算术运算符_转义字符_赋值和比较运算符_逻辑运算符_位运算符
- javascript入门·简单运算和数据类型转换
- Java 变量,数据类型的转换,若干算术运算符
- C语言学习2:sizeof ,数据类型,scanf,算式操作,赋值与比较操作,逻辑操作,位的操作,条件运算符,特异赋值结果,强制转换,使用变量要注意的
- C++重载逗号,括号,类型转换,实现以奇怪的方式给变量赋值
- char * 类型的变量和 char 型数组重新赋值
- JAVA第二章基础知识:注释,标识符,数据类型常量变量,基本数据类型转换。--------------(Make A little EvProgresseryday )
- shell脚本之变量、变量类型、条件测试、算术运算、及特殊变量
- SQL不是同一类型的变量赋值最好转换成统一类型,否则引起莫名错误
- JAVA基础二(java中的注释、ava编程语法基础、java数据类型、数据类型的转换、变量、运算符、分支语句、循环语句)
- ios入门攻略 02篇 C语言基础【常量、变量、scanf函数、算术运算】
- c++算术运算和位运算中类型转换和类型提升规则和方法
- C++算术类型转换和赋值类型转换
- vs2005入门 之 运算符号(赋值运算\算术运算)
- 黑马程序员—Java语言基础(关键字、标识符、注释、常量与变量、进制、数据类型、类型转换、代码示例)