Пункт о соответствии Powershell - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть этот простой скрипт, который, кажется, не работает.

param ($where, $what)
Write-Host "Finding in '$where' - '$what'"
if (!$what -match "\.sql$")
{
    $what += ".sql"
    Write-Host "Unmatched..."
 }
else
{
    Write-Host "Matched..."
}
Write-Host "Finding in '$where' - '$what'"
#Get-ChildItem $where $what -Recurse

В выходных данных всегда указывается Matched..., когда это не должно.Удивительно, но сама линия соответствия ведет себя корректно при запуске в интерактивном окружении.

PS C:\Users\sjoshi> .\sc1 -where "." -what "*s*"
Finding in '.' - '*s*'
Matched...
Finding in '.' - '*s*'

Есть мысли, что здесь происходит?

1 Ответ

1 голос
/ 05 февраля 2011

Прямо здесь: if (! $ What -match ".sql $")

! $, Что будет $ true или $ false, в зависимости от того, $ равно null или содержит какое-либо значениеи это то, с чем вы сравниваете ". \ sql $".

Я думаю, что вы хотели:

 if ($what -notmatch "\.sql$")

Чтобы продемонстрировать:

 $a = "something"
 !$a
 False

 $a = $null
 !$a
 True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...