Skift Etui i Strømshell
introduktion til skift tilfælde i strømshell
skift funktion i strømshell bruges til at håndtere flere if-udsagn eller i andre termer er det udskiftning af flere betingelser, hvis/ellers hvis / ellers. For at kontrollere en enkelt betingelse i Script eller funktion kan du bruge If/else-sætning, men hvis du vil evaluere mere if-udsagn, skal du bruge Skift.
skift er bedre sammenlignet med flere if-udsagn og let at implementere og enkel brug til kodning. Der er flere betingelser under hver sætning, og når en af dem opfylder, udføres handlingen.
Start dit gratis Datavidenskabskursus
Hadoop, datavidenskab, statistik & andre
syntaks:
Switch (<Value>)
{
<Condition1> {Action1}
<Condition2> {Action2}
}
fuld syntaks:
Switch ( <value> ) {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}
eller
Switch -file {
"String" | Number | Variable | { expression } { statementlist }
default { statementlist }
}
parametre for skift tilfælde i Strømshell
- regeks: det kaldes også regulært udtryk. Udfører regulære udtryk kontrol mod værdien af betingelsen. Hvis du bruger Regeks, ignoreres jokertegn og nøjagtighed. Også, hvis matchklausulen ikke er en streng, ignoreres denne parameter.
- jokertegn: angiver, at betingelsen er en jokertegnstreng. Hvis du bruger jokertegn, Regeks og nøjagtighed ignoreres. Også, hvis matchklausulen ikke er en streng, ignoreres denne parameter.
- præcis: udfører kampen mod den nøjagtige streng. Hvis du bruger eksakt, jokertegn og Regeks ignoreres, og hvis matchklausulen ikke er en streng, ignoreres denne parameter.
- CaseSensitive: denne parameter kontrollerer den tilstand, der matcher nøjagtigt med den beståede værdi (store og små bogstaver), hvis den ikke stemmer overens, ignoreres denne parameter. Det har også brug for en strengværdi.
- fil: tager filstien som en inputværdi snarere end en strengværdi. Hvis flere filparametre er bestået, tager det kun den sidste. Hver linje i filen læses og evalueres i forhold til betingelsen, og hvis betingelsen matcher, udfører den denne værdi eller viser en skriftlig meddelelse.
rutediagram
Hvordan fungerer kontakten i Kraftshell?
som vist i ovenstående diagram, når som helst værdi (streng, heltal, float eller andre datatyper), array, jokertegn, filer osv. er bestået, så begynder det at matche betingelser en efter en, og når tilstanden matcher, scriptet udfører den blok. For flere matchende værdier udføres flere scrips-blokke, og hvis der ikke findes nogen matchende værdi, og hvis standardbetingelsen er angivet, udfører den den blok, ellers er der null-output.
eksempler på Skift i Strømshell
lad os se det givne eksempel:
eksempel# 1
1. Enkel omskifterfunktion med streng, heltalsværdi bestået.
kode:
switch (3) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}
Output:
kode:
switch("data"){
"abc"{"Abc executed"}
"xyz"{"Xyz Executed"}
"data"{"Data Executed"}
}
Output:
nu, hvad hvis parameteren ikke matcher udtrykket. Som et eksempel nedenfor, 5 stemmer ikke overens med nogen af Omskiftningssagerne. I dette tilfælde vil udgangen være null.
kode:
switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
}
for at overvinde ovenstående problem skal standard angives, og standardblokering udføres, når ingen af parameteren matcher.
kode:
switch (5) {
1 {"One"}
2 {"Two"}
3 {"Three"}
default{"No Match Found"}
}
Output:
eksempel# 2
lad os se det givne eksempel:
forskel mellem if / else if /else og skift. Fra nedenstående eksempel kan du forstå, hvordan det er nemt at skrive et script med Omskifterfunktionen.
kode:
$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:
forskel: 31.3154 millisekunder
denne forskel bliver stor, når du skriver massivt script eller funktioner inde i kontakten.
1. Skift med Regeks Parameter
Hvis Regeks er nævnt i skift, evaluerer det udtrykket med bestået værdi, og hvis en del af betingelsen matcher, udfører den denne handling.
overvej eksemplet nedenfor.
kode:
Switch ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}
Output:
efter tilføjelse af Regeks.
kode:
Switch -Regex ("Donkey"){
"Dog" {"Dog is Mentioned"}
"Cat" {"Cat is Mentioned"}
"Don" {"Donkey is Mentioned"}
"key" {"Donkey is mentioned again"}
default {"Nothing is mentioned"}
}
udgang:
2. Skift med jokertegn Parameter
jokertegn fungerer ligner lignende parameter.
kode:
$msg = "Error, WMI connection failed"
Switch -Wildcard ($msg) {
"Error*" {"WMI Error"}
"Warning*" {"WMI Warning"}
"Successful*" {"WMI Connection Successful"}
}
Output:
3. Skift med nøjagtig Parameter
nøjagtig funktion er standard i kontakten. Det er ligegyldigt, om du bruger det eller ej. Men når du bruger to parametre på samme tid, har den sidste parameter forrang.
kode:
Switch -Regex -Exact ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}
Output:
kode:
Switch -Exact -Regex ("Hello"){
"He" {"Hello World"}
"Hi" {"Hi World"}
Default {"No World"}
}
udgang:
4. Skift med Filparameter
Du kan angive en filsti direkte til kontakten som en parameter. Du kan bruge fil med en sti til en fil i stedet for at give den et variabelt udtryk.
kode:
Switch -Wildcard -File C:\temp\switchtest.txt {
"*Warning*"{Write-Warning $PSItem}
"*Error*"{Write-Error $PSItem}
}
Output:
Du kan bruge $PSItem eller $_ til at arbejde med aktuelle emner.
5. Skift med CaseSensitive parameter
når du bruger en Casesensitive parameter i en kontakt, skal betingelsen matche nøjagtigt efter hvert tegn.
kode:
switch -CaseSensitive ("Hello") {
"HeLlo" {"This is different HeLlo"}
Default {"This is not Matching"}
}
Output:
6. Passing Array værdi for at skifte funktion
simpelt Array :
switch (10,12) {
9 { "Nine" }
10 { "Ten" }
11 {"Eleven"}
12 {"Twelve"}
Default {"None"}
}
Output:
passerer Array objekt
kode:
$VMOps = @(
"VM_Delete"
"VM_Create"
)
switch ($VMops) {
"VM_Delete" {"VM Delete Operation"}
"VM_Create" {"VM Create Operation"}
"VM_Shutdown" {"VM Shutdown Operation"}
}
udgang:
7. Break tilstand
Når du angiver break tilstand, derefter Operation pauser i denne løkke og kan ikke fortsætte yderligere udførelse. Dette er ret nyttigt, når du ikke vil kontrollere yderligere trin, når tilstanden tilfredsstiller, og udførelsestiden bliver hurtigere.
kode:
$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
}
}
Output:
Hvis du bemærker, er der kun en blok udført, og så går den ud af omskifterfunktionen.
8. Fortsæt betingelse
Fortsæt parameter bruges til at springe den særlige iteration. For eksempel, hvis der er 3 elementer, der skal matche, udføres det først, og når tilstanden matcher, springer den over andre trin og går videre til næste trin.
kode:
switch ('Hello') {
"hello" {'First Block Executes'
continue}
'HELLO' {'Second Block Executes'
continue }
'HeLLo' {'Third Block Exectues'
continue }
Default {'Nothing executed'}
}
Output:
som du kan se, er der kun et argument bestået (‘Hej’), det udfører kun den første blok, fordi udtrykket matcher, og der ikke er noget andet argument tilbage at udføre, scriptet slutter.
- endnu et blandet eksempel på pause og fortsæt med kontakten.
kode:
switch ('Alpha','Beta','Delta') {
"Alpha" {'First Block Executes'
continue}
'Beta' {'Second Block Executes'
break }
'Delta' {'This will not Execute'}
}
Output:
konklusion
alt i alt er kontakten langt bedre end at implementere flere If-betingelser og giver mere funktionalitet og reduktion i eksekveringstid.
Anbefalede artikler
dette har været en guide til at skifte sag i Kraftshell. Her diskuterer vi også syntaksen, parametre, og eksempler på Skift sag i Kraftshell. Du kan også se på følgende artikler for at lære mere –
- hvad er Shell Scripting?
- komplet vejledning til funktion i Shell-Scripting
- Lær ekkoet i Shell-Scripting
- eksempler på skiftetaske i Shell-Scripting
- komplet vejledning til funktion i Shell-Scripting
- Lær ekkoet i Shell-Scripting
- eksempler på skiftetaske i Shell-Scripting
- Python-skiftetaske/hvordan implementeres?
Leave a Reply