-2

Я пытаюсь создать простой оператор if и хочу, чтобы он игнорировал регистр.Не удается заставить параметр lc работать?

Это мой псевдо-код:

if (Lowercase $xxx notequal lowercase "xxx") 
{......} 

Я пробовал:

if (-lc $ConfigAppUsers -ne -lc "No" ) 
if ( lc $ConfigAppUsers -ne lc "No" ) 
if ((lc $ConfigAppUsers) -ne (lc "No")) 
if ((-lc $ConfigAppUsers) -ne (-lc "No")) 

и я всегда получаю:

-lc : The term '-lc' is not recognized as the name of a cmdlet, function, 
script file, or operable program. Check the spelling of the name, or if a 
path was included, verify that the path is correct and try again. 
At line:1 char:1 
+ -lc "No" 
+ ~~~ 
    + CategoryInfo   : ObjectNotFound: (-lc:String) [], CommandNotFoundException 
    + FullyQualifiedErrorId : CommandNotFoundException 

Что я делаю неправильно?

+1

'Lc«Perl»пе ЖХ«оболочки script'' –

ответ

3

lc - это функция Perl, а не функция PowerShell. В PowerShell можно строчные буквы строки, вызвав ToLower() метод строкового объекта:

if ($ConfigAppUsers.ToLower() -ne 'no') 

Однако сравнение PowerShell не чувствителен к регистру по умолчанию, так что вы на самом деле не нужны. Простое сравнение строк будет достаточно:

if ($ConfigAppUsers -ne 'No') 
4

Я не уверен, почему вы продолжаете добавлять минус знаки:

if (lc $ConfigAppUsers ne "no") { 
    ... 
} 

Можно сказать, что lc "No" вместо "no", но это отчасти глупо называть lc на строковый литерал.

Другая проблема заключается в том, что вы не используете Perl. Ошибка, которую вы получаете, не является сообщением об ошибке Perl. Я думаю, что это ошибка Windows PowerShell.

+0

S # $%, я извиняюсь, я запуталась, я работаю слишком много вещей в в то же время. i ment PowerShell, Исправлен вопрос. –