Kapcsolót az Esetben a PowerShell
Bevezetés Kapcsoló Esetben a PowerShell
Kapcsoló funkció a PowerShell használt kezelni több, Ha nyilatkozatok vagy egyéb szempontból csere több feltételek if/else if/else. Ha egyetlen feltételt szeretne ellenőrizni a szkriptben vagy a funkcióban, használhatja az If/else nyilatkozatot, de ha többet szeretne értékelni, ha a kijelentéseket használja, akkor használja a kapcsolót.
Switch jobb összehasonlítani több If kimutatások és könnyen megvalósítható és egyszerű használata kódolás. Az egyes kijelentések több feltételt tartalmaznak, és ha az egyik megfelel, akkor a műveletet végrehajtják.
ingyenes adattudományi tanfolyam indítása
Hadoop, Data Science, Statistics & mások
/ div >
szintaxis:
Switch (<Value>)
{
<Condition1> {Action1}
<Condition2> {Action2}
}
teljes szintaxis:
Switch ( <value> ) {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}
vagy
Switch -file {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}
a PowerShellben lévő Kapcsolótok paraméterei
- regex: reguláris kifejezésnek is nevezik. Elvégzi a reguláris kifejezés ellenőrzését az állapot értékével szemben. Ha használja Regex, helyettesítő és exact figyelmen kívül hagyja. Továbbá, ha a match záradék nem karakterlánc, akkor ezt a paramétert figyelmen kívül hagyja.
- helyettesítő: azt jelzi, hogy a feltétel egy helyettesítő karakterlánc. Ha a helyettesítő, Regex, és exact figyelmen kívül hagyja. Továbbá, ha a match záradék nem karakterlánc, akkor ezt a paramétert figyelmen kívül hagyja.
- pontos: elvégzi a mérkőzést a pontos karakterlánc ellen. Ha az Exact, a Wildcard és a Regex parancsokat figyelmen kívül hagyja, és ha a match záradék nem karakterlánc, akkor ezt a paramétert figyelmen kívül hagyja.
- cases sensitive: ez a paraméter ellenőrzi azt a feltételt, amely pontosan megfelel az átadott értéknek (esetérzékeny), ha nem egyezik meg, akkor ezt a paramétert figyelmen kívül hagyja. Szüksége van egy karakterlánc értékre is.
- File: a fájl elérési útját bemeneti értékként veszi fel, nem pedig karakterláncként. Ha több fájlparaméter kerül átadásra, akkor csak az utolsó. A fájl minden sorát a feltétel alapján olvassa el és értékeli, és ha a feltétel megegyezik, akkor végrehajtja ezt az értéket, vagy írásbeli üzenetet jelenít meg.
folyamatábra
hogyan működik a Switch PowerShellben?
amint az a diagram felett látható, amikor bármilyen érték (karakterlánc, egész szám, úszó vagy más adattípus), tömb, helyettesítő karakterek, fájlok stb. elhalad, majd elkezdi a megfelelő feltételeket egyenként, és amikor a feltétel megegyezik, a szkript végrehajtja azt a blokkot. Több megfelelő érték esetén több szkriptblokk kerül végrehajtásra, ha nincs megfelelő érték, és ha az alapértelmezett feltétel meg van adva, akkor végrehajtja azt a blokkot, különben nincs null kimenet.
példák Kapcsolótok PowerShellben
nézzük meg az adott példát:
példa# 1
1. Egyszerű kapcsoló funkció string, egész érték telt el.
Kód:
switch (3) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}
kimenet:
Kód:
switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}
kimenet:
most mi van, ha a paraméter nem egyezik a kifejezéssel. Az alábbi példában az 5 nem egyezik meg a kapcsolási esetek egyikével sem. Ebben az esetben a kimenet null lesz.
Kód:
switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}
a fenti probléma megoldásához az alapértelmezettnek meg kell adnia, az alapértelmezett blokkot pedig akkor kell végrehajtania, ha egyik paraméter sem egyezik.
Kód:
switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
default{"No Match Found"}
}
kimenet:
példa# 2
nézzük meg az adott példát:
különbség If /Else If / Else és switch között. Az alábbi példából megértheti, hogyan könnyű írni egy szkriptet a kapcsoló funkcióval.
Kód:
$time = 3
if($time -eq 1){"It's 1 O'Clock"}
elseif ($time -eq 2) {"It's 2 O'Clock"}
elseif ($time -eq 3) {"It's 3 O'Clock"}
else {"No Match Found"}
$time = 3
switch ($time) {
1 {"It's 1 O'Clock"}
2 {"It's 2 O'Clock"}
3 {"It's 3 O'Clock"}
default{"No Match found"}
}
Output:
Execution time for both the methods.
Code:
$time = 3
Measure-Command {
if($time -eq 1){"It's 1 O'Clock"}
elseif ($time -eq 2) {"It's 2 O'Clock"}
elseif ($time -eq 3) {"It's 3 O'Clock"}
else {"No Match Found"}
}
TotalMilliseconds :
Code:
$time = 3
Measure-Command {
switch ($time) {
1 {"It's 1 O'Clock"}
2 {"It's 2 O'Clock"}
3 {"It's 3 O'Clock"}
default{"No Match found"}
}
}
TotalMilliseconds:
különbség: 31.3154 milliszekundum
Ez a különbség hatalmas lesz, ha masszív szkriptet vagy funkciókat ír a kapcsolón belül.
1. Váltás a Regex paraméterrel
Ha a Regex szerepel a switch-ben, kiértékeli a kifejezést az átadott értékkel, és ha a feltétel egy része megegyezik, akkor végrehajtja ezt a műveletet.
vegye figyelembe az alábbi példát.
Kód:
Switch ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}
kimenet:
hozzáadása után Regex.
Kód:
Switch -Regex ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}
kimenet:
2. Váltás helyettesítő paraméterrel
a helyettesítő karakter hasonló a hasonló paraméterhez.
Kód:
$msg = "Error, WMI connection failed"
Switch -Wildcard ($msg) {
"Error*" {"WMI Error"}
"Warning*" {"WMI Warning"}
"Successful*" {"WMI Connection Successful"}
}
kimenet:
3. Kapcsoló pontos paraméter
pontos funkció alapértelmezett kapcsoló. Nem számít, hogy használja-e vagy sem. De ha egyszerre két paramétert használ, akkor az utolsó paraméter elsőbbséget élvez.
Kód:
Switch -Regex -Exact ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}
kimenet:
Kód:
Switch -Exact -Regex ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}
kimenet:
4. Váltás a
Fájlparaméterrel megadhat egy fájl elérési útját közvetlenül a kapcsolóhoz paraméterként. Használhatja fájl elérési útját egy fájlt, ahelyett, hogy ez egy változó kifejezést.
Kód:
Switch -Wildcard -File C:\temp\switchtest.txt {
"*Warning*"{Write-Warning $PSItem}
"*Error*"{Write-Error $PSItem}
}
kimenet:
használhatja $PSItem vagy $ _ dolgozni az aktuális elemeket.
5. Kapcsolja be a
Esetérzékeny paramétert egy kapcsolóban, akkor az állapotnak pontosan meg kell egyeznie az egyes karakterekkel.
Kód:
switch -CaseSensitive ("Hello") {
"HeLlo" {"This is different HeLlo"}
Default {"This is not Matching"}
}
kimenet:
6. Átadó tömb érték kapcsoló funkció
egyszerű tömb :
switch (10,12) {
9 { "Nine" }
10 { "Ten" }
11 {"Eleven"}
12 {"Twelve"}
Default {"None"}
}
kimenet:
átadó tömb objektum
kód:
$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {"VM Delete Operation"}
"VM_Create" {"VM Create Operation"}
"VM_Shutdown" {"VM Shutdown Operation"}
}
kimenet:
7. Törési állapot
amikor megadja a törési állapotot, akkor a művelet megszakad a hurokban, és nem tudja folytatni a további végrehajtást. Ez nagyon hasznos, ha nem szeretné, hogy ellenőrizze a további lépéseket, ha a feltétel megfelel a végrehajtási idő gyorsabb lesz.
Kód:
$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {
"VM Delete Operation"
break }
"VM_Create" {
"VM Create Operation"
break}
"VM_Shutdown" {
"VM Shutdown Operation"
break
}
}
kimenet:
ha észreveszi, csak egy blokk van végrehajtva, majd kilép a switch funkcióból.
8. Continue Condition
A Continue paraméter az adott iteráció kihagyására szolgál. Például, ha van 3 elem, amely megfelel, akkor először végrehajtja, majd amikor a feltétel megegyezik, akkor kihagyja a többi lépést,majd a következő lépésre lép.
Kód:
switch ('Hello') {
"hello" {'First Block Executes'
continue}
'HELLO' {'Second Block Executes'
continue }
'HeLLo' {'Third Block Exectues'
continue }
Default {'Nothing executed'}
}
kimenet:
Mint látható, csak egy érv lejárt (“Hello”), akkor végrehajtja az első blokk csak azért, mert a kifejezés megfelelő, de nincs más érv, balra, hogy végre, a könyv végén.
- még egy vegyes példa a törésre, majd folytassa a kapcsolóval.
Kód:
switch ('Alpha','Beta','Delta') {
"Alpha" {'First Block Executes'
continue}
'Beta' {'Second Block Executes'
break }
'Delta' {'This will not Execute'}
}
kimenet:
következtetés
összességében a switch sokkal jobb, mint a többszörös If feltételek végrehajtása, és több funkcionalitást és a végrehajtási idő csökkentését biztosítja.
ajánlott cikkek
Ez egy útmutató a PowerShellben lévő kapcsolási esethez. Itt is megvitatják a szintaxis, paraméterek, példák kapcsoló esetében Powershell. A következő cikkeket is megnézheti, ha többet szeretne megtudni-
- mi a Shell Scripting?
- PowerShell Parancsok
- PowerShell Szereplők
- Használja A Powershell
- Útmutató Tömb a PowerShell a Példák
- Példa a Regex PowerShell
- Teljes Útmutató Funkció a Shell Scripting
- Tanulni a Visszhang a Shell Scripting
- Példa a Kapcsolót az Esetben a Shell Scripting
- Python Váltás Esetén|, Hogyan valósítja meg?
Leave a Reply