Bash-skriptid on kasulikud ülesannete automatiseerimiseks ja need sobivad suurepäraselt lihtsate käsurearakenduste loomiseks. Bashi kest tõlgendab Bashi skripte, nii et te ei pea nende kirjutamiseks ja käitamiseks installima mingeid sõltuvusi. Bash-skriptid on samuti kaasaskantavad, kuna enamik Unixi-põhiseid operatsioonisüsteeme kasutab sama shelli tõlgendajat.
Bashi skriptimise tundmine on iga arendaja jaoks kohustuslik, eriti kui töötate Unixi-põhiste süsteemidega.
Muutujad Bashis
Bashi muutujad on tõstutundlikud. Muutujate deklareerimiseks kasutage võrdusmärki (=) nimi vasakul ja väärtus paremal:
STATE=Washington
Väärtus, millele see deklaratsioon omistab RIIK on üksainus sõna. Kui vajate oma väärtuses tühikuid, kasutage selle ümber jutumärke:
STATE="Põhja-Arizona"
Peate kasutama dollarimärki ($) teiste muutujate või lausete viitemuutujate eesliide:
STATE=Washington
LOCATION="Minu asukoht on $STATE"
Väärtuste printimine Bashis
Bashis muutujate printimiseks on mitu võimalust. Võite kasutada kaja käsk põhiväljundi või C-stiili jaoks printf käsk stringi vormindamiseks.
STATE=Washington
LOCATION="Minu asukoht on $STATE"
kaja$LOCATION
Pärast kuulutamist RIIK muutuja, määrab see skript ASUKOHT viidates STATE. Seejärel kasutab If muutuja LOCATION lõpliku väärtuse printimiseks kaja.
The printf märksõna võimaldab andmete väljastamiseks kasutada vormindusverbe. Stringivormingu verbid on sarnased C ja Go omadega, kuid piiratud verbidega.
Tegusõna | Funktsionaalsus |
---|---|
%c | prindib üksikuid märke |
%o | prindib kaheksakümnendkohad |
%s | prindib stringe, korpusest sõltumatult |
%x | prindib väiketähtedega kuueteistkümnendsüsteemi |
%X | prindib suurtähtedega kuueteistkümnendsüsteemi |
%d | prindib täisarvud |
%e | trükib teaduslik mõiste hõljub väiketähtedega |
%E | trükib teaduslik mõiste hõljub suurtähtedega |
%f | prindib ujukomaarvud |
%% | prindib ühe protsendi sümboli. |
Siin on näide verbi kasutamisest koos printida märksõna.
STATE=Lagos
printf "Minu asukoht on %s" $STATE
The printf funktsioon asendaks RIIK muutuja asendis %s tegusõna ja väljundiks oleks "Minu asukoht on Lagos".
Bashis saate kommenteerida räsi või naela (#) sümbol. Kest ignoreerib kommentaare automaatselt.
#!/bin/bash
# STATE=Washington
# LOCATION="Minu asukoht on $STATE"
Mitmerealisi kommentaare pole. Enamik IDE-sid ja tekstiredaktoreid võimaldavad kommenteerida kiirklahviga Ctrl/Command + kaldkriips(/). Peaksite saama kasutada otseteed mitme üherealise kommentaari loomiseks.
Kasutaja sisendi vastuvõtmine Bashis
Nagu paljud teised programmeerimiskeeled, saate ka Bashis vastu võtta kasutajapoolseid sisestusi, et muuta oma programmid/skriptid interaktiivsemaks. Võite kasutada lugeda käsk kasutaja sisendi taotlemiseks.
lugeda vastuseks
Sel juhul on vastuseks muutuja säilitab kohaletoimetamisel kasutaja sisendi.
echo "Mida sa tahad?:"
loe vastust
kaja $vastus
Kasutaja sisestustaotlus on ülaltoodud näites uuel real.
Saate lisada -n lipp kaja print lause, et säilitada rida, kuhu kasutaja sisestab sisendi.
echo -n "Mida sa tahad."
loe vastust
kaja $vastus
Massiivide deklareerimine Bashis
Massiivid Bashis on nagu enamik keeli. Massiivimuutuja saab Bashis deklareerida, määrates sulgudes olevad elemendid.
Riigid=('USA' 'Venemaa' 'Ukraina', "Inglismaa", "Taiwan", "Hiina")
Juurdepääs massiivile muutuja nimele viidates tooks esimese elemendi. Saate juurdepääsu kogu massiivile, kasutades indeksina tärnimärki.
echo ${Countries[*]}
Konkreetsele elemendile juurdepääsuks saate määrata ka massiivi indeksi. Massiivi indeks algab nullist.
kaja "${Countries[4]}"
Tingimuslikud avaldused Bashis
Bash pakub programmides otsuste tegemiseks tingimusi.
Siin on Bashi if-else avalduse anatoomia. Tingimuse lõpu määramiseks peate kasutama semikoolonit.
kui [[ tingimus ]]; siis
kaja avaldus 1
elif [[seisund ]]; siis
kaja avaldus2
muidu [[seisund ]]; siis
kaja avaldus 3
fi
Peate lõpetama iga kui avaldus koos fi märksõna.
kui [ 1 == 2 ]; siis
kaja üks
elif [ 2 == 3 ]; siis#muidu-kui
kaja kaks
muidu [ 4 > 3 ];
kaja "õige, 3"
fi
Saate kasutada oma Bashi programmides käändelauseid, kasutades juhtum märksõna. Enne avaldust peate määrama mustri, millele järgneb sulud.
CITY=Lagos
juhtum$CITYsisse
"Washington") # muster
kaja "Ameerika Ühendriigid" # väide
;; # juhtumi lõpp
"Lagos" | "Abuja")
kaja "Nigeeria"
;;
"Johannesburg" | "Kaplinn")
kaja "Lõuna-Aafrika"
;;
*) # vaikemuster
kaja "Antarktika" # vaikelause
;;
esac# juhtumiavalduse lõpp
Saate määratleda vaiketähe, kasutades mustrina tärni (*). Juhtumiavaldused peavad lõppema tähega esac märksõna.
Silmused Bashis
Sõltuvalt teie vajadustest saate kasutada while-tsüklit, vahemiku for-tsüklit või C-stiili korduvate operatsioonide jaoks.
Siin on näide C-stiilis for-loopist. For-tsüklid peavad lõppema tähega tehtud märksõna ja peate lause for lõpetama semikooloniga, millele järgneb teha märksõna.
jaoks ((a = 0; a < 10; a+2)); teha
kaja$a
tehtud
Vahemik for loop on kasulik failidega töötamiseks ja paljudeks muudeks toiminguteks. Peate kasutama sisse märksõna vahemikuga for-loop.
jaoks i sisse {1..7}; teha
kaja$1
tehtud
Siin on lihtne lõpmatu tsükkel Bashi demonstreerimiseks samas silmused tegevuses.
nimi=1
samas [ 1 - le 5 ] # samas 1 < 5
teha
kaja$nimi
tehtud
The -le tingimuslauses on kahendoperaator väärtusele vähem kui.
Funktsioonid Bashis
Bashis funktsioonide deklareerimiseks pole vaja märksõnu. Funktsioone saate deklareerida nimega ja seejärel sulgudega funktsiooni keha ees.
print_working_directory() {
kaja$ PWD#PWD käsu kutsumine skriptist
}
kaja "Sa oled sisse $(print_working_directory)"
Funktsioonid võivad Bashis muutujaid tagastada. Kõik, mida vajate, on tagasi märksõna.
print_working_directory() {
tagasi$ PWD
}
The print_working_directory funktsioon tagastab faili töökataloogi.
Saate kirjutada shelliskripte teistes keeltes
Bash ei ole ainus keel, mida saate kasutada oma operatsioonisüsteemi kestaga suhtlemiseks või käsurearakenduste loomiseks. Saate kasutada paljusid teisi keeli, nagu Go, Python, Ruby ja Rust.
Paljudes operatsioonisüsteemides on Python3 eelinstallitud ja Python on levinud keel. Kui vajate veelgi rohkem funktsioone, kui Bashi skriptid pakuvad, kaaluge Pythoni kasutamist.