如果条件总是返回 False
if condition always returning False
我正在编写 powershell-v2.0 脚本。该脚本包含一个设置环境变量的函数。函数如下:
function SetSvnEnvironmentVariable($path)
{
# Get the Path environment variable
$pathVar = [Environment]::GetEnvironmentVariable("Path","User")
# Check if path environment variable already contains the path to be added
if(-Not ($pathVar -like $path))
{
$pathVar += $path
[Environment]::SetEnvironmentVariable("Path",$pathVar, [System.EnvironmentVariableTarget]::User)
}
}
$path
变量包含要添加到PATH环境变量的路径。
我面临的问题是,即使 $path
是 $pathVar
的子串,if 条件总是 returns False
.
以下是 $pathVar
和 $path
的值。
$pathVar
:
C:\Program Files (x86)\MATLAB\R2009b\bin\win32;C:\Program Files\TortoiseSVN\bin
$path
:
;C:\Program Files\TortoiseSVN\bin
使用通配符解决了我的问题。没有通配符的 -like
运算符比较字符串是否相等,因此总是返回 False
。
通过如下改变if
条件,if
条件returnsTrue
:
if(-Not ($pathVar -like "*$path*"))
{
....
}
如果路径已经包含您要添加的文件夹的子文件夹,则使用通配符或正则表达式匹配进行此类检查会带来误报的风险。最好在分号处拆分环境变量的值,并使用 -contains
/-notcontains
运算符检查结果数组是否包含或不包含您要添加的项目:
function SetSvnEnvironmentVariable($path)
{
$pathVar = [Environment]::GetEnvironmentVariable('Path', 'User')
if ($pathVar.Split(';') -notcontains $path))
{
$pathVar += ";$path"
[Environment]::SetEnvironmentVariable('Path', $pathVar, [EnvironmentVariableTarget]::User)
}
}
请注意,$path
不应使用前导(或尾随)分号指定。
我正在编写 powershell-v2.0 脚本。该脚本包含一个设置环境变量的函数。函数如下:
function SetSvnEnvironmentVariable($path)
{
# Get the Path environment variable
$pathVar = [Environment]::GetEnvironmentVariable("Path","User")
# Check if path environment variable already contains the path to be added
if(-Not ($pathVar -like $path))
{
$pathVar += $path
[Environment]::SetEnvironmentVariable("Path",$pathVar, [System.EnvironmentVariableTarget]::User)
}
}
$path
变量包含要添加到PATH环境变量的路径。
我面临的问题是,即使 $path
是 $pathVar
的子串,if 条件总是 returns False
.
以下是 $pathVar
和 $path
的值。
$pathVar
:
C:\Program Files (x86)\MATLAB\R2009b\bin\win32;C:\Program Files\TortoiseSVN\bin
$path
:
;C:\Program Files\TortoiseSVN\bin
使用通配符解决了我的问题。没有通配符的 -like
运算符比较字符串是否相等,因此总是返回 False
。
通过如下改变if
条件,if
条件returnsTrue
:
if(-Not ($pathVar -like "*$path*"))
{
....
}
如果路径已经包含您要添加的文件夹的子文件夹,则使用通配符或正则表达式匹配进行此类检查会带来误报的风险。最好在分号处拆分环境变量的值,并使用 -contains
/-notcontains
运算符检查结果数组是否包含或不包含您要添加的项目:
function SetSvnEnvironmentVariable($path)
{
$pathVar = [Environment]::GetEnvironmentVariable('Path', 'User')
if ($pathVar.Split(';') -notcontains $path))
{
$pathVar += ";$path"
[Environment]::SetEnvironmentVariable('Path', $pathVar, [EnvironmentVariableTarget]::User)
}
}
请注意,$path
不应使用前导(或尾随)分号指定。