powershell的阵列

建立阵列

使用「逗号」来建立阵列

#一个阵列(内含三个元素)PS R:\> $arr = 5, 6, 7PS R:\> $arr567#一个阵列(内含一个元素)PS R:\> $arr = ,100PS R:\> $arr100#元素可以是不同型别PS R:\> $arr = 100, 200, "abc"PS R:\> $arr100200abc#小括弧的功能,并不是用来建立阵列,而是用来调整优先顺序PS R:\> $arr = (100, 200, "abc")PS R:\> $arr.Count3#一个阵列(内含一个元素,元素本身是阵列)PS R:\> $arr = ,(100, 200, "abc")PS R:\> $arr.Count1#不加小括弧PS R:\> $arr = ,100, 200, "abc"PS R:\> $arr.Count3

命令的可能结果

#$files的可能型别:#   找到0 个txt:null#   找到1 个txt:FileInfo#   找到多个txt:阵列PS R:\> $files = dir *.txt

使用 @() 传回阵列

#$files的可能结果:#   一个空阵列(长度0)#   一个阵列(内含一个元素)#   一个阵列(内含多个元素)#如果不是阵列,就把它变成阵列#如果已经是阵列了,就不管它PS R:\> $files = @(dir *.txt)

不使用 @() 的话

#以为Length属性是「找到的个数」#结果是「档案大小」#原来,它只找到一个档案,传回了FileInfo物件PS R:\> $files = dir *.ps1PS R:\> $files.Length631#这里的Length属性是阵列长度PS R:\> $files = @(dir *.ps1)PS R:\> $files.Length1

使用 @() 来建立空阵列

PS R:\> $arr = @()

() vs @()

#没有找到档案时,会报错PS R:\> (dir *.zip)[0]无法编制 Null 阵列的索引。位于 线路:1 字元:1#没有找到档案时,不会报错PS R:\> @(dir *.zip)[0]PS R:\> $null -eq @(dir *.zip)[0]True

使用 .. 来建立阵列

# 起点、终点都有包含PS R:\> 100 .. 102100101102# 递减PS R:\> 3 .. 1321

function的传回值

传回的是,阵列里的元素。不传回阵列

#不只return是传回值,其他地方也是PS R:\> function myFunc{>>     #这里是传回值>>     100,200,300>>>>     #这里也是传回值>>     return 700,800,900>> }#$r是一个阵列(内含6个元素)PS R:\> $r = myFuncPS R:\> $r.Count6PS R:\> function myFunc2{>>     $a1 = 100,200,300>>     $a2 = 700,800,900>>>>>>     #这里是传回值>>     $a1>>>>     #这里也是传回值>>     return $a2>> }#$r是一个阵列(内含6个元素)PS R:\> $r = myFunc2PS R:\> $r.Count6

在「阵列」前面加逗号,使它传回阵列

PS R:\> function myFunc{>>     #前面加逗号>>     ,(100,200,300)>>>>     #前面加逗号>>     return ,(700,800,900)>> }PS R:\> $r = myFuncPS R:\> $r.Count2PS R:\> $r[0]100200300PS R:\> $r[1]700800900PS R:\> function myFunc2{>>     $a1 = 100,200,300>>     $a2 = 700,800,900>>>>>>     #前面加逗号>>     ,$a1>>>>     #前面加逗号>>     return ,$a2>> }PS R:\> $r = myFunc2PS R:\> $r.Count2PS R:\> $r[0]100200300PS R:\> $r[1]700800900

阵列取值

负的索引值

PS R:\> $arr = 100, 200, 300PS R:\> $arr[-1]300# 0 到 -1 并不是全部PS R:\> $arr[0..-1]100300PS R:\> 0..-10-1

中括弧内可以放阵列

#只有取值可以这样做。设值不行。PS R:\> $arr = 100, 200, 300PS R:\> $i = 2, 1, 0PS R:\> $arr[$i]300200100

阵列的属性值

PS R:\> $files =  @(dir *.txt)#使用「阵列自己」的属性值PS R:\> $files.Length3#使用「元素」的属性值PS R:\> $files.LastWriteTime2022年4月12日 下午 06:45:112022年5月29日 上午 08:00:132022年5月30日 下午 08:06:53

阵列设值

阵列向等号左边设值

#变数个数相同PS R:\> $arr = 100, 200, 300PS R:\> $a, $b, $c = $arrPS R:\> $a100PS R:\> $b200PS R:\> $c300#变数个数少PS R:\> $a, $b = $arrPS R:\> $a100PS R:\> $b200300#变数个数多PS R:\> $a, $b, $c, $d = $arrPS R:\> $a100PS R:\> $b200PS R:\> $c300PS R:\> $dPS R:\> $null -eq $dTrue

阵列加法

阵列 + 阵列

PS R:\> $arr1 = 100, 200, 300PS R:\> $arr2 = 400, 500, 600#加入的是元素PS R:\> $r = $arr1 + $arr2PS R:\> $r.Count6#前面放逗号,加入阵列PS R:\> $r = $arr1 + ,$arr2PS R:\> $r.Count4

阵列 + 元素

PS R:\> $arr1 = 100, 200, 300#把 500 放到阵列后面PS R:\> $r = $arr1 + 500PS R:\> $r.Count4#把 500 放到阵列前面PS R:\> $r = 500 + $arr1方法引动过程失败,因为 [System.Object[]] 未包含名为 'op_Addition' 的方法。位于 线路:1 字元:1#用 @() 转成阵列,再相加PS R:\> $r = @(500) + $arr1PS R:\> $r.Count4

阵列乘法

PS R:\> $arr1 = 100, 200, 300# 倍数要放在右边PS R:\> $r = $arr1 * 3PS R:\> $r.Count9# 倍数不能放在左边PS R:\> $r = 3 * $arr1方法引动过程失败,因为 [System.Object[]] 未包含名为 'op_Multiply' 的方法。位于 线路:1 字元:1

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章