上一节介绍了Powershell赋值运算符中的 = ,+= , -= ,详细内容参考这里。 


本节介绍Powershell赋值运算符中的 *= , /= , %= , ++ , -- 。



1.乘法赋值运算符 (*=)

    乘法赋值运算符 (*=) 对数字值执行乘法或追加指定数目的变量字符串值副本。如果变量是单个数字值,则将该值与运算符右侧的值相乘,并将结果赋值给变量。例如:

PS C:\> $a=2
PS C:\> $a*=5
PS C:\> $a
10

    在上面的语句中,*= 运算符组合了两个运算。首先执行乘法,然后赋值。因此,以下语句是等效的:

PS C:\> $a*=3
PS C:\> $a=($a * 3)

    如果变量包含字符串值,则 PowerShell 将指定数目的字符串追加到该值,相当于将字符串复制指定的倍数,然后赋值,例如:

PS C:\> $a="Powershell"
PS C:\> $a *= 3
PS C:\> $a
PowershellPowershellPowershell

    需要注意的是不可以对两个字符串进行相乘操作,即以下语句是无效的。

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

    要对数组的元素执行乘法,需要使用索引标识要执行乘法的元素。例如,下面的命令使数组中第一个元素( 索引位置 0 )乘以 4。

PS C:\> $a=1,2,3
PS C:\> $a[0] *= 4
PS C:\> $a
4
2
3

2. 除法赋值运算符 (/=)

    除法赋值运算符 (/=) 使数字值除以在运算符右侧指定的值。除法运算符不能用于处理字符串变量。/= 运算符组合了两个运算。首先执行除法,然后赋值。因此,以下两个语句是等效的:

PS C:\> $a /= 2
PS C:\> $a = ($a / 2)

    例如下面的命令使用 /= 运算符对变量的值执行除法:

PS C:\> $a = 8
PS C:\> $a /= 4
PS C:\> $a
2

    与乘法赋值运算符类似,如果需要需要对数组元素执行,需要指定元素的下标(索引)。


3. 模赋值运算符 (%=)

    模赋值运算符 (%=) 使变量的值除以运算符右侧的值,将余数赋值给变量,即取余操作,与除法赋值运算符类似,两个操作时数字时,才能使用此运算符。如果变量包含字符串变量或数组,则不能使用此运算符。%= 运算符组合了两个运算。首先,执行除法运算并确定余数,然后将余数赋予变量。因此,以下语句是等效的:

PS C:\> $a %= 4
PS C:\> $a = ($a % 4)

    下面的语句使用 %= 运算符保存商的模(余数):

PS C:\> $a = 9
PS C:\> $a %= 4
PS C:\> $a
1

4. 递增运算符(++)和递减运算符(--)

    递增运算符 (++) 使变量的值增加 1。在简单语句中使用递增运算符时,默认不返回任何值。要查看变量结果,请输入变量名称。例如:

PS C:\> $a=5
PS C:\> ++$a
PS C:\> $a
6

    如果要强制返回值,需要将变量和运算符括在圆括号内。例如:

PS C:\> $a=5
PS C:\> (++$a)
6

    递增运算符有前缀(递增运算符放在变量之前)和后缀(递增运算符放在变量之后)。如果前缀形式,则在变量的值用于语句之前使变量递增(先自增,后运算)。例如:

PS C:\> $a=4
PS C:\> $b = ++$a
PS C:\> $b
5
PS C:\> $a
5

    如果是后缀形式,则在变量的值用于语句之后使变量递增(先运算,后自增)。例如对比下面的语句和上面语句执行的不同,$b的值并没有在$a++后立刻改变:

PS C:\> $a=4
PS C:\> $b = $a++
PS C:\> $a
5
PS C:\> $b
4

    递减运算符和递增运算符完全类似,请自行类推。 需要注意的是,递增和递减运算符一般用在循环结构中,重复判断某一变量是否满足一定条件以此来进行下一步运算,会在Powershell的循环部分讲到,现在你可以理解为Java或是C#中的for循环的递增变量i。