我有一些存储在数组中的变量。是否可以对它们进行空检查,如果为空,则使用ForEach循环将值更改为“无”?
$a = ""
$b = ""
$c = "something"
$array = @($a, $b, $c)
ForEach($element in $array){
If(!$element){
Set-Variable -Name $element -Value "None"
}
}
答案 0 :(得分:0)
以下代码将重新创建$array
。注意空字符串""
和$null
$a = $null
$b = ""
$c = "something"
$array = @($a, $b, $c)
$array = ForEach($element in $array){
If($element -eq $null){
"none"
}else{
$element
}
}
$array
如果您想同时涵盖$null
和""
,则可以按照LotPings指出的[string]::IsNullOrEmpty($element)
进行检查:
if([string]::IsNullOrEmpty($element)){
"none"
}else{
$element
}
但是,如果要处理嵌套数组,事情会变得有些复杂,因为powershell难以返回单元素数组(这是一篇不错的小文章:Powershell Functions do not return single element arrays)
如文章所述,您需要在单元素数组前加一个逗号。看起来像这样:
$a = @()
$b = @()
$c = @("something")
$array = @($a,$b,$c)
$array = ForEach ($element in $array){
if ($element.count -eq 0){
,@("none")
}else{
,$element
}
}
$array
$array | ForEach-Object {$_.gettype()}