|
Hoewel we het over het algemeen gebruiken voor administratieve of bestandsbeheerbewerkingen, is de comfort de Linux breidt zijn functionaliteit veel verder uit dan dat doel, waardoor we kunnen programmeren scripts Deze gids is niet bedoeld als een complete referentie over Bash-programmering, maar eerder als een inleiding tot de basiscommando's en -structuren, waarmee we de kracht van ons GNU / Linux-systeem kunnen uitbreiden. |
Wat is een "script"?
In feite zeggen we dat het een bestand is dat code bevat geschreven in een bepaalde programmeertaal die het systeem gebruikt voor een bepaalde taak. Het hoeft geen externe invoer of grafische interface te hebben, maar het moet wel een uitvoer van verwerkte gegevens veroorzaken (zelfs als de gebruiker het niet ziet).
De taal die door Bash wordt gebruikt, wordt gedefinieerd door zijn eigen interpreter en combineert de syntaxis van andere Shells, zoals de Korn Shell (ksh) of de C Shell (csh). Veel van de opdrachten die gewoonlijk in de console worden gebruikt, kunnen ook in scripts worden gebruikt, behalve die welke strikt betrekking hebben op een bepaalde distributie.
Structuur van een script
Om te beginnen hebben we een teksteditor nodig en de wens om te programmeren. De bestanden die we opslaan met een .sh-extensie kunnen worden uitgevoerd (of geïnterpreteerd) door de console, zolang de eerste regel de volgende is:
#! / Bin / bash
Dit vertelt het systeem om de console te gebruiken om het bestand uit te voeren. Bovendien kunt u met het teken # opmerkingen schrijven. Om het eenvoudigste voorbeeld te maken, voegen we nog een regel toe, te zien in de volgende afbeelding:
De echo-opdracht geeft een bericht op het scherm weer, in dit geval de typische "Hallo wereld!" Als we het opslaan en uitvoeren met de console, zullen we het resultaat zien.
Basisopdrachten
De volgende opdrachten zijn gebruikelijk en erg handig voor elk type programma. We verduidelijken dat er nog veel meer zijn, maar voorlopig behandelen we het volgende.
Aliassen: hiermee kan een reeks woorden worden vervangen door een kortere, waardoor code wordt gereduceerd.
#We maken een alias genaamd per met het adres van de map #Downloads alias per = '/ home / user / Downloads' #Elke keer dat we het willen gebruiken, hoeven we alleen #het nieuwe woord per # aan te roepen Om die alias te vernietigen, we gebruiken unalias unalias per
break: hiermee kunt u onmiddellijk een for, while, tot of een lus selecteren (we zullen de loops later in detail bestuderen)
#Maak een lus die de nummers van 1 tot 5 toewijst #voor elke "draai van de lus" voor teller in 1 2 3 4 5 do #We printen de huidige waarde van de variabele #counter, die wordt geanalyseerd door het teken $ echo "$ counter" #Als de tellerwaarde gelijk is aan 3 if [$ counter –eq 3] dan #De pauze verlaat de lus voor pauze fi done
continue - Gelijk aan break, behalve dat het de huidige lus negeert en naar de volgende gaat.
#Maak een lus die de nummers van 1 tot 5 toewijst #voor elke "draai van de lus" voor teller in 1 2 3 4 5 do #Als de tellerwaarde gelijk is aan 3 if [$ counter –eq 3] dan # Doorgaan voorkomt dat de rest van de huidige # cyclus wordt geanalyseerd door naar de volgende ronde te springen, dat wil zeggen dat #waarde 3 niet wordt afgedrukt. ga verder met fi echo "$ counter" gedaan
declareren: declareert variabelen en kent ze waarden toe, net als typeset (ze werken op dezelfde manier). We kunnen het combineren met enkele opties: -i declareert gehele getallen; -r voor alleen-lezen variabelen, waarvan de waarde niet kan worden gewijzigd; –A voor matrices of "arrays"; -f voor functies; -x voor variabelen die kunnen worden "geëxporteerd" buiten de omgeving van het script zelf.
declareren –i num = 12 declareren –x pi = 3.14
help: toont hulp voor een specifiek commando.
jobs: toont de lopende processen.
# Met –c tonen we de naam van de commando's, met –p # de pid (proces-id) van elk proces. banen -cp
let: evalueer een rekenkundige uitdrukking
laat a = 11 laat a = a + 5 # Ten slotte drukken we de waarde af van a die 16 is echo "11 + 5 = $ a"
local: maak lokale variabelen aan, die bij voorkeur in functies van het script zelf moeten worden gebruikt om fouten te voorkomen. U kunt dezelfde functies gebruiken als de opdracht declareren.
local v1 = "Dit is een lokale variabele"
logout: maakt het mogelijk om volledig uit te loggen bij een Shell; handig voor gevallen waarin we met meer dan één Shell-venster werken, waarbij het exit-commando slechts één venster tegelijk laat beëindigen.
printf: hiermee kunt u gegevens afdrukken en formatteren. Het heeft veel opties, dus we zullen er een paar noemen.
#% f wordt afgedrukt als een zwevend getal, n voor nieuwe # regel printf "% fn" 5 5.000000 # & d laat toe om decimale getallen door te geven als argumenten printf "Er zijn% d orders gewaardeerd in% d dollars.n" 20 Er zijn 500 bestellingen ter waarde van 20 dollar.
lezen: lees een regel van de standaardinvoer (module die bijvoorbeeld wordt gebruikt om gegevens via het toetsenbord te laden). We kunnen opties doorgeven zoals: -t om een leeslimiet te geven; -a zodat elk woord wordt toegewezen aan een positie in de aname-array; -d om een scheidingsteken te gebruiken dat aan het einde van de regel moet worden geschreven; onder andere.
echo "Voer uw naam in en druk op ENTER" #Lees de naam van de variabele lees naam echo "Uw naam is $ naam"
type: beschrijft een commando en zijn gedrag. Het kan handig zijn om de gegevensdefinities voor elk commando te achterhalen.
type –a '[' #type vertelt ons dat [een in de Shell ingebouwd commando is [een in de Shell ingebouwd commando is # -a het mogelijk maakt om de mappen te vinden die # een uitvoerbaar bestand met de ingevoerde naam bevatten. [is / usr / bin / [
ulimit: beperkt de toegang tot en het gebruik van bepaalde systeembronnen tot processen, ideaal voor programma's die administratieve wijzigingen toestaan of die gericht zijn op verschillende soorten gebruikers. Bij het instellen van een limiet schrijven we een getal dat de kilobytes van de limiet vertegenwoordigt.
#We zien onze huidige limieten ulimit –a # -f staat het beperken van gebruikers toe om # bestanden groter dan 512000 Kb (500 #Mb) niet te maken. Ulimit –f 512000 # -v beperkt het virtuele geheugen van het proces. ulimit –v 512000
wacht: wacht tot een bepaald proces of bepaalde taak wordt uitgevoerd om verder te gaan.
#Het script wacht tot het proces van pid # 2585 wordt uitgevoerd
wacht 2585
Andere nuttige opdrachten die we aan scripts kunnen toevoegen, worden weergegeven door symbolen.
!!: voer het laatste commando opnieuw uit
! wer: voert het laatste commando uit dat begon met de uitdrukking “wer”.
'==', '! =', '>', '<', '> =', en '<=': relationele operatoren.
|: De OR-operator die doorgaans wordt gebruikt om twee reguliere expressies samen te voegen.
: escape-opdracht waarmee u uitdrukkingen kunt opmaken. Bijvoorbeeld: a voor een geluidswaarschuwing, n voor een nieuwe regel, b voor backspace, enz.
