(12)Powershell中变量的类型

Window Powershell中变量的类型与Java,C#等高级语言中变量的类型不一样,可以不用显示指定Powershell中变量的类型,即Powershell中的变量具有更大的灵活性。Powershell中的变量采用 .Net Framework类型。

默认情况下,当变量只有一个值时,变量的数据类型由赋予变量的值决定。例如,下面的语句创建一个整数 (System.Int32) 类型的变量:

PS C:\> $a=3

如果需要确定变量的 .NET Framework 类型,可以使用 GetType() 方法(该方法没有任何参数)的 FullName 属性,例如:

PS C:\> $a=3
PS C:\> $a.GetType().fullname
System.Int32

创建字符串变量与Java,C#高级语言一致,需要把值放在引号内。例如:

PS C:\> $a = "3"
PS C:\> $a.GetType().fullname
System.String

如果赋予变量的第一个值是字符串,则 PowerShell 将所有运算都视为字符串运算(字符串的连接),并将新值转换为字符串。例如以下语句执行的结果34是字符串(可以获取其类型来验证):

PS C:\> $a = "3"
PS C:\> $a += 4
PS C:\> $a
34

Powershell中也可以强制指定变量的类型。

在变量名称之前放置类型名称或第一个所赋值前面的方括号中,可以将新的标量变量转换为任何 .NET Framework 支持的类型。在转换变量时,可以确定该变量所能存储的数据的类型。同时,还可以确定只有符合类型的变量才可以赋值给指定的变量。还可以确定填充变量时的变量行为方式。

例如,以下命令将变量转换为字符串类型。

PS C:\> [string]$a=30
PS C:\> $a += 5
PS C:\> $a
305

下面的语句转换第一个值,而不是转换变量:

PS C:\> $a = [string]30

将变量转换为特定类型时,通常的约定是转换变量而不是值。但是,如果现有变量的值不能转换为新数据类型,则不能重新转换该变量的数据类型。要更改数据类型,必须替换该变量的值(相当于创建新的变量),例如:

PS C:\> $b = "string"
PS C:\> [int]$b
无法将值“string”转换为类型“System.Int32”。错误:“输入字符串的格式不正确。”
所在位置 行:1 字符: 8
+ [int]$b <<<<
    + CategoryInfo          : NotSpecified: (:) [], RuntimeException
    + FullyQualifiedErrorId : RuntimeException

PS C:\> [int]$b = 4


将数据类型放在变量名称的前面会锁定变量的类型,除非通过指定另一个数据类型显式覆盖该类型。

如果试图赋予与现有类型不兼容的值,并且未显式覆盖该类型,则 Windows PowerShell 将显示错误,例如:

PS C:\> $a = 3
PS C:\> $a = "string"
PS C:\> [int]$a = 3
PS C:\> $a = "string"
无法将值“string”转换为类型“System.Int32”。错误:“输入字符串的格式不正确。”
所在位置 行:1 字符: 3
+ $a <<<<  = "string"
    + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
    + FullyQualifiedErrorId : RuntimeException

PS C:\> [string]$a = "string"

在 PowerShell 中,通过数组包含多个项的变量的数据类型的处理方式与包含单个项的变量的数据类型不同。除非明确向数组变量指定数据类型,否则其数据类型始终是 System.Object []。此数据类型是特定于数组的。也可以通过指定另一个类型来覆盖默认类型。例如,下面的语句将变量转换为 string [] 数组类型:

PS C:\> [string]$a = "string"
PS C:\> [string[]] $a = "one","two","three"

PowerShell 变量可以是任何 .NET Framework 数据类型。此外,也可以赋予在当前进程中可用的任何完全限定的 .NET Framework 数据类型。例如,下面的语句指定 System.DateTime 数据类型:

PS C:\> [system.datetime]$a = "4/1/2017"
PS C:\> $a

2017年4月1日星期六 00:00:00


为多个变量赋值

PowerShell 中,可以使用单个命令对多个变量赋值。所赋值的第一个元素将赋予第一个变量,第二个元素赋予第二个变量,第三个元素赋予第三个变量,依此类推。例如,下面的命令将值 4 赋予 $a 变量,将值 5 赋予 $b 变量,并将值 6 赋予 $c 变量:

PS C:\> $a,$b,$c = 4,5,6
PS C:\> $a
4
PS C:\> $b
5
PS C:\> $c
6

如果所赋值包含的元素个数超过变量个数,则将所有剩余的值都赋予最后一个变量。例如,下面的语句包含三个变量和五个值:

PS C:\> $a,$b,$c = 4,5,6,7,8
PS C:\> $a
4
PS C:\> $b
5
PS C:\> $c
6
7
8
PS C:\> $c.GetType().fullname
System.Object[]

注意最后一个变量的类型是System.Object[]。

要将 $c 变量中的值赋予另外三个变量,请使用下面的格式:

PS C:\> $d,$e,$f = $c
PS C:\> $d
6
PS C:\> $e
7
PS C:\> $f
8

上面的命令将值 6 赋予 $d 变量,将值 7 赋予 $e 变量,并将值 8 赋予 $f 变量。

通过串联变量,还可以将单个值赋予多个变量。例如,以下以下语句将值"string"赋予所有四个变量:

PS C:\> $a = $b = $c = $d = 9
PS C:\> $a
9
PS C:\> $b
9
PS C:\> $c
9
PS C:\> $d
9


总结

本节介绍了Powershell中变量的类型,通过本节的学习应当掌握以下内容

  1. 根据变量的值可以判断变量的类型,可以通过变量的GetType()方法的fullname属性。
  2. Powershell变量类型不同,进行的运算也不同(如是数字值的相加还是字符串的连接)。
  3. 给多个变量赋值或是把一个值赋值给多个变量(变量的串联)。
时间: 2024-11-03 21:39:58

(12)Powershell中变量的类型的相关文章

(8)Powershell中变量的定义和使用

上一节介绍了Powershell中的算术运算符,详细内容参考这里,这些运算符主要用于字符串的连接,组成bool表达式等用于对管道中的命令执行结果进行筛选,我们将会后续的文章中讲到. 这一节主要介绍Powershell中变量的定义和使用,以及使用变量时应该注意的事项. 和所有编程语言中的变量一样,Powershell中的变量也是存于存储值的内存单元,需要注意的是,Powershell中的变量是以美元符号($)开头的单字节(一般是英文字符,虽然ISE中支持双字节的字符,但是像任何编程语言,我们不鼓励

输出C语言中 变量的类型

使用gcc的警告信息间接知道变量的类型 #include <stdio.h> #include <stdlib.h> #include <stddef.h> #include <string.h> int main() { int a[2][10]; printf("%d\n", a[0]); printf("%d\n", a); printf("%d\n", a + 1); exit(0); }

C语言中变量存储类型有哪些?

变量的存储类型是C语言的重要组成部分,也是C语言学习的基础.那C语言中变量的存储类型有哪几种呢?在编程过程中又该怎样运用呢?就这一问题,我今天给大家介绍一下!总的来说,C语言中变量的存储类型可以分为四种,他们分别是自动变量.静态变量.外部变量和寄存器变量这四种,他们的说明符依次是:auto.static.extern和register. 一.auto auto称为自动变量. 局部变量是指在函数内部说明的变量(有时也称为自动变量).用关键字auto进行说明,当auto省略时,所有的非全程变量都被认

JAVA中变量的类型及命名规范

1. 计算机是一种极度精确的机器;2. 要将信息存储在计算机当中,就必须指明信息存储的位置和所需的内存空间;3. 在JAVA编程语言当中,使用声明语句来完成上述的任务; 4. 变量的类型: 5. 变量名的命名规范:

(15)Powershell中的类型运算符

这节介绍 Powershell 中的类型运算符. Powershell 中的类型运算符可以与 .Net Framework 类型协同使用,可以用来判断一个对象是否是指定的 .Net Framework 类型的一个实例,或是判断一个对象是否可以转换为 .Net Framework 类型. Powershell 支持以下类型运算符 运算符 说明 示例 -is 如果对象是指定的 .Net Framework 类型则返回 TRUE,否则返回 FALSE PS C:\> "abc" -is

(9)Powershell中的内置变量

上一节主要介绍了Powershell中变量的定义和使用,以及在变量中包含特殊字符,或是变量在输出时的一些技巧,详细内容参考这里. 本节介绍Powershell中的内置变量,或是称为自动变量. 在Powershell命令行中,可以输入 Get-Variable 命令查看Powershell中的所有内置变量 PS C:\> Get-Variable Name                           Value ----                           ----- $ 

(17)Powershell中的重定向运算符

默认情况下,Powershell 把输出发送到屏幕显示.但是,Powershell也可以将输出重定向至一个文本文件,或将错误输出重定向至常规输出流. 重定向运算符有什么用 ? 重定向运算符意味着我们可以将命令的输出信息输出到指定的文件,完全满足脚本中的log的要求,即可以利用重定向打印脚本或命令执行的详细信息. Powershell 中有以下重定向运算符. 运算符 说明 示例 > 将输出发送到指定文件. PS D:\> Get-Process > process.txt >>

python基础学习(三)变量和类型

变量的作用:变量就是用来存储数据的. 变量的定义 在python中,变量在使用之前需要进行赋值,变量只有赋值后才能使用,如果变量没有赋值就使用会出现什么情况呢?如下图,使用之前变量未定义,会报错,如下: 变量时使用=来进行赋值的 =左边是一个变量名 =右边是值 练习 计算矩形的面积(长为100,高为10的矩形) 使用ipython3 使用PyCharm # 定义矩形的宽度 width = 100 # 定义矩形的高度 height = 10 # 计算面积 print(width * height)

(23)Powershell中的首选项变量

上一节介绍了 Powershell 中的环境变量,本节介绍 Powershell 中的首选项变量,这些变量的作用与环境变量类似,都是Powershell中的内置变量,也可以对这些值进行更改.需要注意的是,首选项变量影响 PowerShell 操作环境以及在该环境中运行的所有命令.在很多情况下,cmdlet 带有的参数可用于替代特定命令的首选行为. 以下是 Powershell 中常见的首选项变量及其默认值. 首选项变量 默认值及说明 $ConfirmPreference  High $Debug