De beginnershandleiding voor shell-scripting 4 Condities en als-dan-statements
In onze gids over shell-scripting hebben we genoeg van de basisbegrippen behandeld die je comfortabel zou moeten vinden bij het experimenteren. In de aflevering van deze week pakken we enkele van de leukere dingen aan, zoals voorwaarden en 'als-dan'-uitspraken.
Wat zijn voorwaarden?
In het dagelijks leven zeggen we dat voorwaarden vereisten zijn waaraan moet worden voldaan om iets te laten gebeuren. Om met mijn laptop verbinding te kunnen maken met internet, moeten er verschillende voorwaarden zijn waaraan voldaan moet worden, zoals een ISP, de modem en / of router aan staan, mijn laptop aan staat, etc. Het is vrij eenvoudig en als er een is van deze vereisten is niet voldaan, het resultaat - mijn laptop die verbinding maakt met internet - gebeurt niet.
De omstandigheden op het gebied van computing werken op dezelfde manier. We kunnen testen of een string overeenkomt met een andere string, of deze niet met een andere string overeenkomt, of zelfs helemaal niet. Op dezelfde manier kunnen we numerieke argumenten testen om te zien of de ene groot, kleiner of gelijk aan de andere is. Om te zorgen dat er iets gebeurt nadat aan de voorwaarden van de test is voldaan, gebruiken we 'als-dan'-instructies. Hun formaat is vrij eenvoudig.
als VOORWAARDE
dan
command1
command2
...
commando-n
fi
Als verklaringen
Laten we een snel, klein testscript uitvoeren, zullen wij?
als test $ 1 -gt $ 2
dan
echo "$ 1 is groter dan $ 2"
fi
U zult merken dat alleen wanneer die voorwaarde waar is, het script de volgende opdracht zal uitvoeren. Anders wordt de instructie "if" afgesloten. Als er na de "als" -instructie opdrachten zijn, worden deze normaal uitgevoerd. Ik heb de volgende regel toegevoegd aan het einde van ons bovenstaande script om dit te illustreren:
echo "Dit komt na de if-verklaring"
Hier zijn enkele andere numerieke operatoren die u misschien wilt uitproberen:
- -eq: gelijk aan
- -ne: niet gelijk aan
- -Het is: minder dan
- -le: minder dan of gelijk aan
- -gt: groter dan
- -ge: groter dan of gelijk aan
Strings testen
Nu, als we de eerste regel van ons script als volgt wijzigen:
als test $ 1 = $ 2
dan zal de conditie testen of de twee gelijk zijn. Er is hier echter een vangst !! Het gebruik van een gelijkteken (=) vergelijkt twee tekenreeksen en geen getallen. Als u getallen wilt vergelijken, zou u de "-eq" -operator moeten gebruiken, net zoals wij "-gt" hierboven hebben gebruikt.
Laten we nu nog een wijziging aanbrengen:
als test $ 1! = $ 2
De opname van het uitroepteken (!) Fungeert als een "niet" -modifier. Dat wil zeggen, het voert alleen de volgende opdracht uit als de twee strings niet overeenkomen.
Hier is een lijst met enkele meer op toetsen gebaseerde tests die u kunt gebruiken:
- string: alleen alleen een argument gebruiken test of de string niet leeg (null) is of niet op een bepaalde manier is gedefinieerd
- -n-tekenreeks: hiermee wordt getest of de tekenreeks niet leeg is en is gedefinieerd
- -z-tekenreeks: hiermee wordt getest of de reeks leeg is en op die manier is gedefinieerd
Wat anders over als?
Ik geef toe dat die sectietitel absoluut een slechte woordspeling was. Oké, we weten hoe we een opdracht moeten uitvoeren als een test waar is, maar wat als we een andere opdracht willen uitvoeren als deze niet klopt? We kunnen de twee gemakkelijk samenvoegen door een sectie toe te voegen aan onze "als-dan" -verklaringen - een "anders"!
als VOORWAARDE
dan
command1
command2
...
commando-n
anders
command1
command2
...
commando-n
fi
Laten we een eenvoudig script samenstellen.
Er is alles met de juiste inspringing. Als je goed kijkt, zie je dat we vierkante haakjes ([en]) hebben gebruikt in plaats van de testopdracht. Ze zijn functioneel equivalent voor onze doeleinden en de kans is groter dat u de vierkante haken om verschillende redenen ziet, dus we gebruiken ze vanaf nu.
Dit is hoe de uitvoer eruit zal zien:
Het is zo makkelijk!
Wat moet ik nu doen?
Nu u weet hoe u "if-then-else" -instructies moet gebruiken, kunt u scripts uitvoeren die tests kunnen uitvoeren. U kunt bijvoorbeeld een script uitvoeren dat een md5-hash van een bestand berekent en het vervolgens vergelijkt met het script dat u in een bestand hebt gedownload om te zien of ze overeenkomen.
Voor sommige bonuspunten kun je een script maken met een "voor" -lus, maar gebruik je testvoorwaarden in plaats van regels uit een lijstbestand te lezen ...
We gaan naar enkele van de meer interessante delen in onze Beginner's Guide to Shell Scripting. Als je de vorige lessen hebt gemist, kun je hier een korte lijst bekijken:
- De basisprincipes van Shell Scripting
- Voor loops gebruiken
- Meer basisopdrachten
- Wat zijn de verschillen tussen Linux-shells?
- Basis reguliere expressies gebruiken
Als u scripts hebt gemaakt of gebruikt die gebruikmaken van testvoorwaarden, if-then-else-instructies en 'for'-loops, deel deze dan met ons in de opmerkingen!