[玩转系统] 变量
作者:精品下载站 日期:2024-12-14 02:56:07 浏览:15 分类:玩电脑
变量
变量代表值的存储位置,并且该值具有类型。传统的过程式编程语言是静态类型的;也就是说,变量的运行时类型是在编译时声明的类型。面向对象语言添加了继承的思想,它允许变量的运行时类型是编译时声明的类型或从该类型派生的某种类型。作为一种动态类型语言,PowerShell 的变量本身没有类型。事实上,变量并没有被定义;它们只是在第一次被赋予值时就产生了。虽然变量可能被限制(第 5.3 节)保存给定类型的值,但赋值中的类型信息并不总是能够静态验证。
在不同时间,变量可以通过赋值(第 7.11 节)或使用 ++
和 --
运算符(第 7.1.1 节)与不同类型的值关联。 5,第 7.2.6 节)。当与变量关联的值更改时,该值的类型可能会更改。例如,
$i = "abc" # $i holds a value of type string
$i = 2147483647 # $i holds a value of type int
++$i # $i now holds a value of type double because
# 2147483648 is too big to fit in type int
对尚未创建的变量的任何使用都会导致值 $null。要查看变量是否已定义,请使用 Test-Path cmdlet。
5.1 可写位置
可写位置是一个表达式,指定命令具有读和写访问权限的资源。可写位置可以是变量(第 5 节)、数组元素(第 9 节)、通过下标访问的哈希表中的关联值(第 10 节)、属性(第 7.1.2 节)或由提供者管理的存储(§3.1)。
5.2 变量类别
PowerShell 定义了以下类别的变量:静态变量、实例变量、数组元素、哈希表键/值对、参数、普通变量和提供程序驱动器上的变量。以下小节描述了每个类别。
在下面的例子中
function F ($p1, $p2) {
$radius = 2.45
$circumference = 2 * ([Math]::PI) * $radius
$date = Get-Date -Date "2010-2-1 10:12:14 pm"
$month = $date.Month
$values = 10, 55, 93, 102
$value = $values[2]
$h1 = @{ FirstName = "James"; LastName = "Anderson" }
$h1.FirstName = "Smith"
$Alias:A = "Help"
$Env:MyPath = "e:\Temp"
${E:output.txt} = 123
$function:F = { "Hello there" }
$Variable:v = 10
}
[Math::PI]
是静态变量$date.Month
是一个实例变量$values[2]
是一个数组元素$h1.FirstName
是一个Hashtable
键,其对应值为 $h1['FirstName']`$p1
和$p2
是参数$radius
、$circumference
、$date
、$month
、$values
、$value
和$h1
是普通变量$Alias:A
、$Env:MyPath
、$ {E:output.txt}
和$function:F
是相应提供者驱动器上的变量。$Variable:v
实际上是一个用其完全限定的提供程序驱动器编写的普通变量。
5.2.1 静态变量
属于该对象的类型而不是该类型的特定实例的对象的数据成员称为静态变量。一些示例请参见§4.2.3、§4.2.4.1 和§4.3.8。
PowerShell 不提供创建包含静态变量的新类型的方法;然而,这种类型的对象可以由主机环境提供。
用于创建和删除包含静态变量的对象的内存由主机环境和垃圾收集系统管理。
有关访问静态变量的信息,请参阅第 7.1.2 节。
静态数据成员可以是字段或属性。
5.2.2 实例变量
属于该对象类型的特定实例而不是该类型本身的对象的数据成员称为实例变量。一些示例请参见§4.3.1、§4.3.2 和§4.3.3。
PowerShell 主机环境可能提供一种创建包含实例变量的新类型或向现有类型添加新实例变量的方法。
用于创建和删除包含静态变量的对象的内存由主机环境和垃圾收集系统管理。
有关访问实例变量的信息,请参阅第 7.1.2 节。
实例数据成员可以是字段或属性。
5.2.3 数组元素
可以通过一元逗号运算符 (§7.2.1)、子表达式 (§7.1.6)、数组表达式 (§7.1.7) 创建数组、二元逗号运算符(第 7.3 节)、范围运算符(第 7.4 节)或 New-Object cmdlet。
用于创建和删除数组的内存由主机环境和垃圾收集系统管理。
数组和数组元素在第 9 节中讨论。
5.2.4 哈希表键/值对
哈希表是通过哈希文字 (§2.3.5.6) 或 New-Object cmdlet 创建的。可以通过 []
运算符添加新的键/值对(第 7.1.4.3 节)。
用于创建和删除哈希表的内存由主机环境和垃圾收集系统管理。
哈希表在第 10 节中讨论。
5.2.5 参数
参数在调用其父命令时创建,并使用调用中或主机环境提供的参数值进行初始化。当其父命令终止时,参数将不再存在。
参数在第 8.10 节中讨论。
5.2.6 普通变量
普通变量由赋值表达式(第7.11节)或foreach语句(第8.4.4节)定义。一些普通变量是由主机环境预定义的,而其他变量是瞬态的,在运行时根据需要来来去去。
普通变量的生命周期是程序执行的一部分,在此期间保证为其保留存储空间。该生命周期从进入与其关联的作用域时开始,并在该作用域执行结束时结束。如果以递归或迭代方式进入父作用域,则每次都会创建局部变量的新实例。
普通变量引用的存储空间的回收与该变量的生命周期无关。
普通变量可以使用 Variable: 命名空间前缀显式命名(第 5.2.7 节)。
5.2.7 提供者驱动器上的变量
§3.1 中介绍了提供程序和驱动器的概念,每个提供程序都能够提供自己的命名空间驱动器。这允许访问这些驱动器上的资源,就好像它们是普通变量一样(第 5.2.6 节)。事实上,普通变量存储在文件系统提供程序驱动器变量:(§3.1.5)上,并且可以通过其普通名称或其完全限定的命名空间名称进行访问。
某些命名空间变量类型受到隐式约束(第 5.3 节)。
5.3 约束变量
默认情况下,变量可以指定任何类型的值。但是,通过在赋值或参数中的名称之前将类型指定为类型文字,可以将变量约束指定给定类型的值。例如,
[int]$i = 10 # constrains $i to designating ints only
$i = "Hello" # error, no conversion to int
$i = "0x10" # ok, conversion to int
$i = $true # ok, conversion to int
function F ([int]$p1, [switch]$p2, [regex]$p3) { ... }
属于命名空间 Env:、Alias: 或文件系统命名空间(§2.3.2、§3.1)的任何变量都隐式约束为类型 字符串
。属于命名空间 Function:(第 2.3.2 节、第 3.1 节)的任何变量都隐式约束为 scriptblock
类型。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag