jste zápasí s pochopením PowerShell srovnávací operátory jako eq
ne
ceq
cne
. Pokud ano, čtěte dál.
přicházející z pozadí vývoje softwaru první instance, kterou jsem měl “ Huh?“moment byl, když jsem poprvé viděl PowerShell je relační operátory eq
ceq
cne
, atd., Všechny ostatní jazyky mají srovnávací operátory, ale ne úplně jako PowerShell. Byl jsem zvyklý na ==
a <>
.
nejen, že syntaxe vypadá úplně jinak než váš typický programovací jazyk, ale také se chovají odlišně při porovnávání sbírek hodnot.
je To něco, co opravdu visel mě, když se učí o PowerShell, ale teď to vypadá, že ol‘ pivo rčení; na chuť.,
pojďme se krátce podívat, co je srovnávací operátor, pokud nejste obeznámeni a ponoříte se hlouběji do nuancí, které PowerShell zavádí. Zanedlouho budete moci ovládat operátory ve skriptech PowerShell bez problémů.
Jak jsem již zmínil, všechny programovací / skriptovací jazyky mají srovnávací operátory. V jejich nejzákladnějším smyslu je nutné srovnávací operátory vyhodnotit, jak různé věci se porovnávají s jinými věcmi. Používají se, aby se dva objekty a vidět, jaký je rozdíl (pokud existuje), je mezi těmito dvěma objekty.,
v případě PowerShellu lze operátory také použít k nalezení prvků uvnitř sbírek hodnot.
pro tento příspěvek půjdu přes operátory rovnosti a jak je PowerShell používá. Tyto jsou eq
ne
s jejich případ-citlivé protějšky ceq
cne
. Pro úplný seznam můžete přeskočit stránky Technet nebo stačí použít Get-Help about_comparison_operators
v konzole Powershell.,
PowerShell -EQ a -CEQ
Pokud budete někdy potřebovat zjistit, jestli objekt je rovna jiný objekt, budete muset použít eq
(case-insensitive) nebo ceq
(case sensitive) operátorů. Tito operátoři testují hodnotu každého subjektu, proti kterému byste chtěli porovnat.
Když jsem se poprvé začal učit PowerShell, neustále bych dělal něco takového
$string = 'Adam'if ($string = 'Adam') { 'string is equal to Adam'}
brzy budete dost udeřeni, abyste to neudělali. Značka =
je operátor přiřazení, který není srovnávacím operátorem., Pro porovnání jedné hodnoty s druhou nelze použít znak =
.
správným způsobem je definovat hodnotu pro kontrolu na levé straně výrazu a použíteq
operátor. Zde je příkladeq
aceq
operátory a jak jsou používány.,
Notice how eq
returned a boolean True
value when comparing our variable against adam
but ceq
returned a boolean False
value? This displays the case sensitivity difference between the two operators.,
to vše je dobré a dobré pro skalární (jednotlivé) hodnoty, ale můžete také najít všechny instance konkrétních hodnot pomocí těchto operátorů. Například, používat PowerShell -eq operátor filtrovat položky v poli:
Pokud máte proměnnou s kolekcí hodnot, jako jsou pole, můžete použít eq
ceq
najít všechny výskyty hodnoty uvnitř kolekce.,
Všimněte si, že našel všechny instance celé číslo 9 jsme se snažili porovnat proti. Používám tuto praktickou metodu po celou dobu.
-NE, a -CNE
Na opačné straně, oba jste ne
cne
. Jsou přesně opakem eq
a ceq
ale zobrazují přesně stejné chování pouze opačně. Netestují rovnost, testují nerovnost.
doufám, že to dává dobré vysvětlení rovnosti operátory porovnání. Tohle mě fakt dostal zavěsil jako nováček, a to nikdy opravdu klikli na mě, dokud jsem byl jen porazit v podání chybové zprávy. Doufám, že tento příspěvek zabraňuje stejnému úderu, který jsem obdržel.