Tutorial Bash Scripting pentru începători

Bash Scripting Tutorial



Limbajul de comandă implicit al Linux este scriptul Bash. Trebuie să rulăm zilnic multe comenzi în Linux în mai multe scopuri. Aceste sarcini zilnice pot fi automatizate folosind un script bash. Orice utilizator poate învăța acest limbaj de scriptare foarte ușor și rapid. Dacă sunteți nou în programarea bash, acest tutorial este pentru dvs.

Conținut:

  1. Comentarii
  2. ecou Comandă
  3. Variabile
  4. Declarație condiționată
  5. Bucle
  6. Funcții
  7. Apelarea programelor într-un script
  8. Crearea meniurilor
  9. Procesare linie de comandă
  10. Aritmetic
  11. Manipularea șirurilor
  12. Returnarea codurilor de returnare dintr-un script și capturarea într-un alt script
  13. Citirea și scrierea în fișiere
  14. Țevi

Comentarii

Adăugarea de comentarii cu codul este o parte esențială a oricărui limbaj de programare. Comentariile nu sunt analizate cu scriptul în momentul executării. Cititorul poate înțelege orice cod în mod corespunzător dacă codul este bine comentat. Puteți adăuga un comentariu în mai multe moduri în scriptul bash. Modul în care puteți adăuga comentarii cu o singură linie și mai multe linii într-un script bash este prezentat în această parte. Creați un fișier bash cu următorul script pentru a cunoaște utilizarea comentariului bash. Aici, simbolul „#” este utilizat pentru adăugarea unui comentariu pe o singură linie, iar citatul simplu („) cu„: ”este utilizat pentru adăugarea de comentarii pe mai multe linii.







bash_comment.sh



#! / bin / bash
# Luați un număr ca intrare
aruncat „Introduceți un număr”
cititla
:'
Verificați dacă numărul de intrare este
mai mic de 10 sau mai mare de 10 sau egal cu 10
'

dacă [[ $ a -Lt 10 ]]
atunci
aruncat „Numărul este mai mic de 10”
elif [[ $ a -gt 10 ]]
atunci
aruncat „Numărul este mai mare de 10”
altceva
aruncat „Numărul este egal cu 10”
fi

Ieșire:



Rulați scriptul.





$bashbash_comment.sh

Aici, scriptul este executat de trei ori cu valoarea de intrare 3, 10 și 90. Următoarea ieșire va apărea.



Dacă doriți să aflați mai multe despre comentariile bash, puteți verifica acest tutorial .

Mergeți la început

comanda ecou

Comanda `echo` este utilizată în bash pentru a imprima ieșirea în terminal. Diverse opțiuni pot fi folosite cu comanda echo în bash pentru a imprima ieșirea în moduri diferite. Creați un fișier bash cu următorul script pentru a cunoaște cele două utilizări simple ale comenzii `echo`. Aici, prima comandă „echo” va imprima un text simplu de date cu o nouă linie și a doua comandă echo va imprima un text simplu fără o nouă linie.

echo_test.sh

#! / bin / bash
#Printați primul text
aruncat „Tipăriți textul cu o nouă linie”
#Printați al doilea text
aruncat -n „Tipăriți text fără o nouă linie”

Ieșire:

Rulați scriptul.

$bashecho_test.sh

Următoarea ieșire va apărea după executarea comenzii de mai sus.

Există multe alte utilizări ale comenzii `echo` în bash. Puteți verifica acest tutorial pentru a afla mai multe despre comanda `echo`.

Mergeți la început

Variabile

Declarația variabilă este o parte necesară a oricărui limbaj de programare. Variabilele Bash pot fi declarate în moduri diferite. Când o valoare este alocată într-o variabilă, atunci nu se folosește niciun simbol la începutul variabilei. Simbolul „$” este utilizat cu numele variabilei în momentul citirii valorii variabilei. Variabila poate fi utilizată de la terminal sau poate fi utilizată în orice script bash.

Următoarele comenzi vor declara o variabilă șir denumită mystr cu o anumită valoare și apoi tipăriți valoarea variabilei din terminal.

$mystr=„Îmi place programarea bash”
$aruncat $ mystr

Ieșire:

Creați un fișier bash cu următorul script. Aici sunt declarate două variabile. Acestea sunt $ a și $ b . Dacă valoarea de intrare care este stocată în $ a este egal cu $ b apoi mesajul, Numerele sunt egale va fi tipărit altfel Numerele nu sunt egale va fi tipărit.

var.sh

#! / bin / bash
aruncat „Introduceți un număr”
cititla
b=100
dacă [[ $ a -eq $ b ]]
atunci
aruncat „Numerele sunt egale”
altceva
aruncat „Numerele nu sunt egale”
fi

Ieșire:

Rulați scriptul.

$bashvar.sh

Comanda de mai sus este executată de două ori cu valoarea 56 și 100. Următoarea ieșire va apărea.

Dacă doriți să aflați mai multe despre variabilele bash, puteți verifica acest tutorial .

Mergeți la început

Declarație condiționată

La fel ca un alt limbaj de programare, puteți utiliza declarația condițională în bash. ‘ Dacă-atunci-altceva ' și ' caz Declarațiile sunt utilizate în principal pentru implementarea instrucțiunilor de condiție în orice limbaj de programare. Utilizarea declarației condiționate prin utilizarea 'dacă' declarația este prezentată în această secțiune a acestui tutorial. Creați un fișier bash cu următorul script în care este utilizată instrucțiunea condițională. Aici, două valori vor fi luate de la utilizator ca intrare și stocate în variabile, $ cod , și $ varsta . Declarația ‘if’ este utilizată pentru a verifica valoarea $ varsta este mai mare sau egal cu 18 și valoarea $ cod este 1100 . Dacă ambele condiții sunt adevărate, atunci mesajul, Ești eligibil să vezi filmul va fi tipărit altfel Nu sunteți eligibil pentru a vedea filmul va fi tipărit.

cond.sh

#! / bin / bash

aruncat 'Introdu codul tau'
cititcod
aruncat 'Introduceți vârsta dvs'
cititvârstă

dacă [[ $ varsta -da 18 && $ cod -eq „1100” ]]
atunci
aruncat „Ești eligibil să vezi filmul”
altceva
aruncat „Nu sunteți eligibil pentru a vedea filmul”
fi

Ieșire:

Rulați scriptul.

$bashcond.sh

Următoarea ieșire va apărea după ce ați luat diferite valori de intrare. 1100 este dat ca cod și 5 este dat ca vârstă pentru prima execuție și dacă condiția returnează fals pentru aceste valori. 1100 este dat ca cod și 45 este dat ca vârstă pentru a doua execuție care returnează adevărat pentru condiția if.

Dacă doriți să aflați mai multe despre declarația condițională bash, puteți verifica acest tutorial.

Mergeți la început

Bucle

Când unele părți ale scriptului trebuie să se execute de mai multe ori, atunci bucla este utilizată pentru a efectua sarcina. Bash acceptă trei tipuri de declarații de bucle, ca și alte limbi. Acestea sunt pentru, în timp și până la bucle. Pe baza cerințelor de programare, o anumită buclă este utilizată în script. Utilizările acestor trei tipuri de bucle sunt prezentate în această secțiune utilizând exemple simple.

Folosind bucla

Creați un fișier bash cu următorul script unde ` pentru` bucla este utilizată pentru iterație. `pentru` bucla este utilizată în principal pentru iterarea unei liste de date sau a unui tablou. Aici, se utilizează o listă cu numele zilei săptămânii, iar numele fiecărei zile săptămânale este iterat folosind bucla for. `dacă` declarația este utilizată pentru a imprima un anumit mesaj pe baza numelui zilei săptămânii.

pentru.sh

# Citește un nume în fiecare săptămână în fiecare iterație a buclei
pentruziînluni marti miercuri joi vineri sambata Duminica
do

# Verificați numele zilei săptămânii este luni sau joi
dacă [[ $ zi=='Luni' || $ zi=='Joi' ]]
atunci
aruncat - Întâlnire pe$ zila 9:30 am '

# Verificați numele zilei săptămânii este marți sau miercuri sau vineri
elif [[ $ zi=='Marţi' || $ zi=='Miercuri' || $ zi=='Vineri' ]]
atunci
aruncat 'Antrenament pe$ zila 11:00 am '
altceva

#Printați „Vacanță” pentru alte zile
aruncat '$ zieste sarbatoare'
fi
Terminat

Ieșire:

Rulați scriptul.

$bashpentru.sh

Următoarea ieșire va apărea după rularea scriptului.

Dacă doriți să aflați mai multe despre bash for loop, puteți verifica acest tutorial.

Folosind bucla while

Creați un fișier bash cu următorul script unde ` în timp ce ` bucla este utilizată pentru iterație. Acest script va imprima acele numere de la 1 la 20 care sunt pare și divizibile cu 5. Aici, $ contor variabila este utilizată pentru a controla iterația buclei și valoarea acestei variabile este incrementată cu 1 în fiecare iterație. Cand `dacă` condiția va reveni adevărată, apoi va imprima valoarea lui $ contor .

#! / bin / bash

#Printați mesajul
aruncat „Tipăriți numerele care sunt pare și divizibile cu 5”

#Inițializați contorul
tejghea=1

#Iterează bucla până când valoarea contorului $ este mai mică sau egală cu 20
in timp ce [ $ contor -la douăzeci ]
do

# Verificați contorul $ este divizibil cu 2 și 5
dacă [[ $ contor%2-eq 0 && $ contor%5-eq 0 ]]
atunci
#Printați contorul $ fără linie nouă
aruncat '$ contor'
fi

#Increment $ contor cu 1
((contor ++))
Terminat
aruncat 'Terminat'

Ieșire:

$bashîn timp ce.sh

Există doar numere cuprinse între 1-20, care sunt pare și divizibile cu 5. Următoarea ieșire va apărea după rularea scriptului.

Dacă doriți să aflați mai multe despre bash ` în timp ce` bucla, atunci puteți verifica acest tutorial .

Folosind bucla până

Creați un fișier bash cu următorul script unde ` până la` bucla este utilizată pentru iterație. Acest script va imprima toate numerele impare de la 0 la 20. $ n variabila este utilizată în acest script pentru a itera bucla.

până.sh

#! / bin / bash

#Inițializați variabila, n
n=douăzeci

# Repetați bucla până când valoarea lui $ n este mai mare de 0
pana cand [ $ n -Lt 0 ]
do

# Verificați dacă valoarea lui n este ciudată
dacă [[ $ n%2-gt 0 ]]
atunci
aruncat $ n
fi

# Creșteți valoarea lui n cu 1
((n=$ n-1))
Terminat

Ieșire:

Rulați scriptul.

$bashpână.sh

Scriptul va imprima toate numerele pare de la 20 la 1. Următoarea ieșire va apărea după rularea scriptului.

Mergeți la început

Funcții

Când un bloc de cod trebuie să se execute de mai multe ori într-un script, atunci funcția este utilizată pentru a efectua sarcina. Va trebui să apelați funcția după nume numai atunci când scriptul definit în funcție trebuie să se execute de mai multe ori, mai degrabă decât să adăugați același script de mai multe ori. Prima paranteză de început și de sfârșit este utilizată cu numele funcției pentru a declara funcția în scriptul bash. Funcția poate fi apelată doar prin numele funcției din bash. Bash nu acceptă argumentul funcțional ca un alt limbaj de programare standard. Dar valoarea poate fi transmisă funcției bash într-un mod diferit, care este prezentat în această secțiune. Valoarea poate fi returnată din funcție cu instrucțiunea return sau fără utilizarea instrucțiunii return.

Creați un fișier bash cu următorul script pentru a afla cum pot fi declarate și apelate funcțiile în script bash. Trei funcții sunt declarate în script. Prima funcție este declarată pentru a imprima un mesaj simplu, Programare Bash pentru începători . A doua funcție este declarată pentru a atribui o valoare șir într-o variabilă, $ return_str care se va imprima, Aflați programarea bash cu LinuxHint după apelarea funcției. A treia funcție este declarată pentru a citi o valoare a argumentului ca raza cercului care va fi furnizată în momentul apelării funcției. Aici, local este folosit pentru a citi valoarea argumentului. Această funcție va calcula aria cercului pe baza valorii razei folosind formula, πr2 și tipăriți valoarea zonei calculate.

func.sh

#! / bin / bash

# Declarați o funcție simplă
funcţieprint_message()
{
aruncat „Programare Bash pentru începători”
}

# Declarați o funcție pentru a returna o valoare șir
funcţieret_strdata()
{
#Inițializați variabila cu valoarea șirului
return_str=„Aflați programarea bash cu LinuxHint”
}

# Declarați o funcție pentru a citi valoarea argumentului
funcţiecalculate_area()

#Citiți valoarea argumentului trecut
local rază=1 $
zonă= $(aruncat $ raza*$ raza*3.14

# Apelați funcția pentru a imprima un mesaj simplu
print_message

# Apelați funcția care va atribui o valoare șir într-o variabilă
ret_strdata

#Printați valoarea variabilei
aruncat $ return_str

#Citiți valoarea razei
aruncat „Introduceți valoarea razei”
cititmuncă

# Apelați funcția cu valoarea razei
calculate_area$ rad

Ieșire:

Rulați scriptul.

$bashfunc.sh

Următoarea ieșire va apărea după rularea scriptului. Primele două linii se vor imprima apelând funcțiile, print_message () și ret_strdata () . Ultima linie se va imprima apelând funcția, calculate_area () cu valoarea razei de intrare luate.

Dacă doriți să aflați despre returnarea unui șir din funcția bash, puteți această tutorie .

Mergeți la început

Apelarea programelor într-un script

Puteți utiliza multe tipuri de comenzi pentru a apela alte programe în orice script bash, cum ar fi sursă, bash, eval, exec , etc. Să presupunem trei fișiere bash, add.sh , subtract.sh, multiplica.sh și divizare.sh creat pentru a efectua adunarea, scăderea, multiplicarea și divizarea. Aici, scade.sh și diviziune.sh citiți argumentele din linia de comandă. Scriptul tuturor acestor patru fișiere este dat mai jos.

add.sh

#! / bin / bash
la=60
b=40
((rezultat=$ a+$ b))
aruncat - Adăugarea de$ a+$ b=$ rezultat'

subract.sh

#! / bin / bash
la=1 $
b=2 USD
((rezultat=$ a-$ b))
aruncat „Scăderea lui$ a-$ b=$ rezultat'

multiplica.sh

#! / bin / bash
((rezultat=1 $*2 USD))
aruncat 'Înmulțirea de 1 $ și 2 $ este$ rezultat'

diviza.sh

#! / bin / bash
la=1 $
b=2
((rezultat=$ a/$ b))
aruncat - Diviziunea$ ade$ beste$ rezultat'

Creați un fișier bash numit, callpro.sh cu următorul script pentru a apela fișierele bash menționate folosind comenzile sursă, bash, eval și exec. Trebuie să setați permisiunea de execuție pentru cele patru fișiere de mai sus înainte de a rula următorul script. Comanda `sursă` este utilizată pentru a apela add.sh fişier. Comanda `bash` este utilizată pentru a executa fișierul subtract.sh. Comanda `eval` este utilizată pentru a executa fișierul multiply.sh. Două valori de intrare sunt trimise ca argumente de linie de comandă pentru comanda `eval`. Ultima comandă este comanda exec care funcționează numai cu calea absolută. Pentru aceasta, numele complet al căii fișierului divide.sh este dat în script.

callpro.sh

#! / bin / bash
script1=„add.sh”
script2=„subtract.sh”
script3=„multiply.sh”
script4=„/home/fahmida/code/divide.sh”

sursă '$ script1'

bash $ script2 cincizeci douăzeci

aruncat „Introduceți valoarea unui”
cititla
aruncat „Introduceți valoarea lui b”
cititb
eval bash $ script3 $ a $ b
exec $ script4 30

Ieșire:

Rulați scriptul.

$bashcallpro.sh

Următoarea ieșire va apărea după rularea scriptului.

Mergeți la început

Crearea meniurilor

Există o comandă utilă în bash pentru a crea un meniu simplu care se numește `select` comanda. Diferite tipuri de meniuri pot fi create folosind această comandă. O anumită listă de date este utilizată pentru a crea un meniu prin această comandă. Creați un fișier bash cu următorul cod pentru a vedea utilizarea `select` comandă pentru crearea unui meniu. În acest exemplu, lista cu cinci elemente va fi tipărită ca un meniu și va solicita utilizatorului să aleagă orice limbă din listă. Valoarea selectată va fi stocată în variabilă, $ limba care este tipărit ulterior prin concatenare cu alt șir. Scriptul va solicita continuu selectarea limbii până când utilizatorul apasă 6 pentru a termina din script.

meniu.sh

#! / bin / bash

#Print mesaj pentru utilizator
aruncat „Selectați limba preferată”

# Definiți lista unui element de meniu
SelectațilimbaînC# Ieșire Java PHP Python Bash
do
#Printați valoarea selectată
dacă [[ $ limba=='Ieșire' ]]
atunci
Ieșire 0
altceva
aruncat „Limba selectată este$ limba'
fi
Terminat

Ieșire:

Rulați scriptul.

$bashmeniu.sh

Conform următoarei ieșiri, utilizatorul a apăsat 3 pentru prima dată când a imprimat PHP și a apăsat 6 pentru a doua oară care s-a terminat din script.

Dacă doriți să aflați mai multe despre crearea meniului bash cu „select”, puteți vizita acest tutorial.

Mergeți la început

Procesare linie de comandă

Uneori trebuie să furnizăm valori de intrare atunci când executăm scriptul din linia de comandă. Această sarcină poate fi realizată în două moduri în bash. Un mod este prin utilizarea variabilelor argument și un alt mod este prin utilizarea funcției getopts. Citirea datelor de intrare pe linia de comandă de la terminal utilizând variabila argument este prezentată în această secțiune.

Creați un fișier bash cu următorul script pentru a vedea utilizarea citirii valorii argumentului liniei de comandă. Acest script va citi trei argumente din linia de comandă care vor fi stocate în variabilele, $ operand1, $ operand2 și $ operator. Pentru a executa corect scriptul, prima și a treia valoare a argumentului trebuie să fie numărul și a doua valoare a argumentului trebuie să fie oricare dintre cei patru operatori aritmetici (‘+’, ‘-’, ‘/’, ‘x’). dacă declarația va verifica valoarea operatorului $ și va efectua operația pe baza operatorului și va imprima valoarea.

cl1.sh

#! / bin / bash

#Printați variabilele argumentului
aruncat „Valorile argumentelor sunt: ​​1 $ 2 $ 3 $”

# Stocați valorile argumentelor
operand1=1 $
operand2=3 USD
operator=2 USD

# Verificați valoarea argumentului de comandă 2 pentru a efectua operația aritmetică
dacă [[ $ operator==„+” ]]
atunci
((rezultat=$ operand1+$ operand2))
elif [[ $ operator==„-” ]]
atunci
((rezultat=$ operand1-$ operand2))
elif [[ $ operator=='X' ]]
atunci
((rezultat=$ operand1*$ operand2))
elif [[ $ operator==„/” ]]
atunci

((rezultat=$ operand1/$ operand2))
fi

# tipăriți rezultatul
aruncat -Și 'Rezultatul este =$ rezultat'

Ieșire:

Rulați scriptul.

$bashcl1.sh

Scriptul este executat de patru ori pentru patru tipuri de operatori aritmetici. Următoarea ieșire va apărea pentru valorile argumentului, 6 + 3, 6 - 3, 6 x 3 și 6/3 .

Valorile argumentelor pot fi transmise cu perechea nume-valoare în bash. Creați un fișier bash cu următorul script pentru a arăta cum să citiți valorile argumentelor cu numele. Scriptul va citi două variabile de argument. Valorile argumentelor cu numele sunt tipărite în prima afirmație a scriptului. Apoi, o buclă for este utilizată pentru a itera matricea care conține valori ale argumentului liniei de comandă. Fiecare element al matricei este separat într-o pereche cheie-valoare utilizând comanda `tăiat`. Apoi, instrucțiunea de caz este utilizată pentru a imprima un anumit mesaj pe baza valorii cheii.

cl2.sh

#! /a.m/bash

#Printați variabilele argumentului
aruncat „Valorile argumentelor sunt: ​​1 $ 2 $”

#Citiți fiecare argument separat folosind bucla for
pentrufuriosîn „[email protected]”
do

# Numele și valoarea argumentului separat
cheie= $(aruncat $ arg | a tăia -f1 -d=)
valoare= $(aruncat $ arg | a tăia -f2 -d=)

#Printați mesajul pe baza numelui argumentului
caz $ cheie în
Nume) aruncat 'Numele studentului =valoare $';;
marcă) aruncat 'Marcă obținută =valoare $' ;;
*)
esac
Terminat

Ieșire:

Rulați scriptul cu următoarele argumente din linia de comandă.

$bashcl2.shNume= Abir Hossainmarcă=90

Două argumente de linie de comandă sunt furnizate în comenzile de mai sus. Acestea sunt nume = Abir Hossain și nota = 90 . Nume și mărci sunt separate prin script și se imprimă două valori după formatarea ieșirii.

Procesarea argumentelor din linia de comandă utilizând getopts funcția nu este discutată în acest tutorial. Dacă doriți să aflați despre procesarea liniei de comandă utilizând getopts funcția, atunci puteți vizita acest tutorial .

Mergeți la început

Aritmetic

Efectuarea operației aritmetice este o cerință comună a oricărui limbaj de programare. Bash face operația aritmetică într-un mod diferit față de un alt limbaj de programare standard. Există mai multe moduri de a face operații aritmetice în bash. Unul dintre modurile simple de a face operația aritmetică este prezentat în această secțiune. Creați un fișier bash cu următorul script. Patru tipuri de operații aritmetice sunt prezentate în acest script. O operație simplă de însumare și împărțire este afișată prin utilizarea primelor paranteze duble la începutul scriptului. Apoi, este afișată operația de preincrementare. În cele din urmă, modul de utilizare a operatorului de stenogramă este prezentat în ultima parte a scriptului.

arith.sh

#! / bin / bash
# Calculați suma
rezultat= $((cincizeci+25))
# Imprimați valoarea însumării
aruncat 'sum =$ rezultat'

# Calculați împărțirea
rezultat= $((cincizeci/25))
# Imprimați valoarea diviziunii
aruncat 'diviziune =$ rezultat'

# Atribuiți o valoare lui N
N=10
# Efectuarea pre-incrementării
((--N))
# Imprimați valoarea lui N
aruncat 'Valoare după decrement =$ N'

# Utilizarea operatorului de stenografie
((N + =10 ))
# Imprimați valoarea lui N
aruncat 'Valoare după adăugarea a 10 =$ N'

Ieșire:

Rulați scriptul.

$basharith.sh

Următoarea ieșire va apărea după rularea scriptului.

Toate operațiile aritmetice se fac folosind paranteze duble în acest script de mai sus. Dar poți folosi ‘ lăsa ',' expr ' și ' bc ‘Comanda de a face operația aritmetică în bash. Dacă doriți să aflați mai multe despre aceste comenzi pentru efectuarea operațiilor aritmetice bash, puteți vizita acest tutorial.

Mergeți la început

Manipularea șirurilor

Multe tipuri de sarcini pot fi realizate cu datele șirului din bash. Unele sunt concatenarea șirului, compararea șirului, împărțirea unui șir, Schimbarea majusculelor și minusculelor șirului etc. Nu există funcții de șir încorporate ca alte limbi standard din bash pentru a efectua operațiile șirului. Unele manipulări obișnuite ale șirurilor sunt discutate în această secțiune a acestui tutorial.

Concatenarea șirului

Adăugarea a două sau mai multe șiruri împreună se numește concatenare de șiruri. Șirul este unit împreună în bash plasându-se unul după altul. Creați un fișier bash cu următorul script pentru a arăta utilizarea concatenării șirurilor. Două variabile de șir sunt inițializate și imprimate după combinarea variabilelor. Aici, conținutul $ string1 și $ string2 vor fi îmbinate și tipărite.

concat.sh

#! / bin / bash

# Inițializați prima variabilă de șir
șirul 1='Imi place '
#Inițializați a doua variabilă de șir
șir2=„Programare Bash”
#Print după ce combinați ambele șiruri
aruncat '$ string1$ string2'

Ieșire:

Rulați scriptul.

$bashconcat.sh

Următoarea ieșire va apărea după rularea scriptului.

Puteți afla mai multe despre concatenarea șirurilor din acest tutorial.

Mergeți la început

Compararea șirului

Bash folosește diferite tipuri de operatori pentru a compara datele șirului. Creați un fișier bash cu următorul script pentru a arăta cum să comparați două șiruri de date. O valoare de șir este luată ca intrare în script care este comparată cu un alt șir. Dacă valoarea se potrivește cu un mesaj, Îți place Python va fi tipărit altfel Îți place PERL va fi tipărit.

compara.sh

#! / bin / bash
aruncatIntroduceți orice valoare șir
citittext

# Verificați dacă datele de intrare sunt echivalente cu Python
dacă [ $ text=='Piton' ];atunci
aruncat „Îți place Python”.
altceva
aruncat „Îți place PERL”
fi

Ieșire:

Rulați scriptul.

$bashcompara.sh

Următoarea ieșire va apărea după rularea scriptului, unde valoarea de intrare este „PERL”.

Puteți afla mai multe despre compararea șirurilor de la acest tutorial .

Șir de divizare

Bash nu are nicio funcție de divizare încorporată pentru a împărți datele șirului. Datele șirului pot fi împărțite prin mai multe moduri în bash pe baza diferitelor tipuri de delimitatori. Creați un fișier bash cu următorul script pentru a arăta cum datele de șir pot fi împărțite în bash. O valoare șir este luată ca intrare. Acest script va împărți valoarea $ text bazat pe spațiu. Aici IFS variabila este utilizată pentru a seta delimitatorul. 'citiți' comanda este utilizată aici pentru a împărți valoarea textului și a stoca valorile într-o matrice. pentru bucla este utilizată pentru a itera matricea și a imprima valoarea fiecărui element.

divizat.sh

#! / bin / bash
# Introduceți o valoare șir
aruncatIntroduceți o valoare șir
citittext
# Setați delimitatorul
IFS=''
#Split valoarea textului $ într-o matrice bazată pe delimitator de spațiu
citit -laarr<<< '$ text'
# Imprimați fiecare valoare a matricei
pentruvaloareîn '$ {arr [@]}';
do
printf 'valoare $ n'
Terminat

Ieșire:

Rulați scriptul.

$bashdivizat.sh

Următoarea ieșire va apărea după efectuarea intrării, Aflați programarea Bash . Această valoare de intrare este un text de trei cuvinte. Deci, șirul este împărțit în trei părți.

Puteți afla mai multe despre compararea șirurilor de la acest tutorial .

Schimbarea cazului șirului

Majoritatea limbajelor de scriptare au funcții încorporate pentru a schimba majuscule și minuscule datele șirului. Dar cazul datelor șirului poate fi modificat în bash folosind `tr` comandă sau folosind ':superior' și ':inferior' Cuvinte cheie. Creați un fișier bash cu următorul script pentru a cunoaște modalitățile de schimbare a majusculelor și minusculelor în bash. Aici, primul șir de date este convertit în majuscule folosind „^^” simbolul și al doilea șir este convertit în minusculă folosind `tr` comanda. `tr` comanda va căuta toate literele majuscule din șir și va converti caracterele în minuscule.

caz.sh

#! / bin / bash

#Inițializați primele șiruri de date
text1=„[email protected]”

#Printați valoarea $ text1 convertind toate caracterele în majuscule
aruncat $ {email ^^}

#Inițializați al doilea șir de date
text2= „Noțiuni de bază despre programarea Bash”

#Printați valoarea $ text2 convertind toate majusculele în minuscule
aruncat $ text2 | NS [:superior:] [:inferior:]

Ieșire:

Rulați scriptul.

$bashcaz.sh

Următoarea ieșire va apărea după rularea scriptului.

Puteți afla mai multe despre compararea șirurilor de la acest tutorial .

Mergeți la început

Citirea datelor șirului prin buclă

Șirul de date funcționează ca o matrice de caractere pentru orice limbaj de programare. Cum ' pentru Bucla ’poate fi utilizată pentru a citi datele șirurilor în bash este prezentată în această secțiune. Creați un fișier de bază cu următorul script pentru a citi fiecare parte a valorii șirului utilizând bucla for.

readstr.sh

#! / bin / bas
# Citiți fiecare cuvânt al unui text folosind pentru buclă
pentruvaloareînProgramare Bashpentruîncepătorii
do
aruncat valoare $
Terminat

Ieșire:

Rulați scriptul.

$bashreadstr.sh

Următoarea ieșire va apărea după rularea scriptului.

Puteți afla mai multe despre iterarea datelor șirului utilizând bucla de la acest tutorial .

Mergeți la început

Returnarea codurilor de returnare dintr-un script și capturarea într-un alt script

Un script bash poate prelua codurile de returnare de la un alt script apelând scriptul și folosind „$?” pentru a citi valoarea returnată. Să presupunem că un fișier bash numit primul.sh returnează un cod după executare. Creați un alt fișier bash numit al doilea.sh și adăugați următorul script pentru a prinde valoarea returnată și pentru a efectua alte sarcini. Codul ambelor fișiere este dat mai jos. primul.sh fișierul va fi apelat de la al doilea.sh fișier la începutul scriptului. primul.sh va returna un cod de ieșire bazat pe valoarea de intrare. second.sh va prinde codul de „$?” și comparați cu 1. Dacă ambele valori sunt egale, atunci se va imprima, Numărul de intrare este mai mare de 100 , altfel va imprima, Numărul de intrare este mai mic sau egal cu 100 .

primul.sh

#! / bin / bash

aruncat „Introduceți o valoare numerică”
cititn

# Verificați dacă valoarea de intrare este mai mică sau egală cu 100 sau nu
dacă [[ $ n -la 100 ]]
atunci
Ieșire 0
altceva
Ieșire 1
fi

al doilea.sh

#! / bin / bash

#Executați fișierul, first.sh
bash „first.sh”

# Verificați dacă codul de returnare este egal cu 1 sau nu
dacă [ $? -eq 1 ]
atunci
aruncat „Numărul de intrare este mai mare de 100”
altceva
aruncat „Numărul de intrare este mai mic sau egal cu 100”
fi

Ieșire:

Rulați scriptul.

$bashal doilea.sh

Următoarea ieșire va apărea când scriptul este executat de 55 și 110 de două ori.

Mergeți la început

Citirea și scrierea în fișiere

Citirea și scrierea fișierelor sunt cerințe comune ale programării bash. Bash nu are nicio funcție încorporată ca o altă limbă pentru a citi sau scrie fișierul. Există mai multe moduri de a citi fișierul în bash. Cea mai obișnuită modalitate de a citi sau scrie un fișier în bash este folosirea „pisică” comanda. Dar această comandă este utilizată pentru a citi întregul conținut al fișierului la un moment dat. De asemenea, puteți citi orice fișier linie cu linie folosind orice buclă și 'citiți' comanda. Folosind operatorul de redirecționare, ‘>’ , puteți scrie date în orice fișier din bash. Dacă doriți să adăugați date în orice fișier, atunci trebuie să utilizați „>>” operator. Atât operațiile de citire, cât și scrierea fișierelor sunt prezentate în partea următoare a acestei secțiuni.

Citirea fișierului în bash

Creați un fișier bash cu următorul script pentru a citi un fișier existent numit „ hardware.txt '. Conținutul acestui fișier este dat mai jos. În script, întregul conținut al fișierului este citit de „pisică” comanda prima și următoare, în timp ce bucla este utilizată pentru a citi fișierul linie cu linie.

hardware.txt

Monitor
Tastatură
Șoarece
Scanner
Imprimantă

readfile.sh

#! / bin / bash

aruncat „Citirea fișierului utilizând comanda cat”

# Citiți conținutul fișierului folosind comanda `cat`
conţinut=pisicăhardware.txt
aruncat $ content

aruncat „Citirea fișierului linie cu linie folosind bucla”

# Alocați numele fișierului
nume de fișier=„hardware.txt”

# Fiecare linie a fișierului va fi citită de fiecare iterație a buclei
in timp ce cititlinia;
do
# tipăriți linia
aruncat $ linie
Terminat<$ nume de fișier

Ieșire:

Rulați următoarele comenzi.

$pisicăhardware.txt
$bashreadfile.sh

Aici, prima comandă va imprima conținutul fișierului, hardware.txt fără a rula niciun script bash și a doua comandă va rula scriptul lui readfile.sh și tipăriți conținutul fișierului de două ori folosind „pisică” comanda si 'citiți' comanda cu bucla while. Puteți vizita acest lucru tutorial pentru a afla mai multe despre citirea fișierului rând cu rând.

Scrierea fișierului în bash

Creați un fișier bash cu următorul script pentru a scrie conținut nou într-un fișier nou și adăugați date în acel fișier.

writefile.sh

#! / bin / bash

aruncat „Introduceți un text”
#Citește datele șirului
cititstr1
#Adăugați datele de intrare în fișier pentru prima dată
aruncat $ str1 >test.txt

aruncat „Introduceți alt text”
#Citiți încă un șir de date
cititstr2
#Adăugați date de intrare la sfârșitul fișierului
aruncat $ str2 >>test.txt

# Afișați conținutul complet al fișierului
aruncat pisicătest.txt

Ieșire:

Rulați scriptul.

$bashwritefile.sh

Următoarea ieșire va apărea după rularea scriptului.

Mergeți la început

Țevi

Pipe este folosit pentru a redirecționa orice ieșire de comandă către altă intrare de comandă. Poate fi folosit între diferite tipuri de comenzi bash pentru a genera ieșiri specifice. Intrarea standard este conectată la ieșirea standard în Linux prin conductă. Trebuie să setați comanda în ordine cu simbolul pipe (|) pentru a obține ieșirea dorită. Două sau mai multe comenzi pot fi executate împreună într-o singură comandă folosind pipe. Trebuie să executați mai multe comenzi în mai multe linii fără țeavă pentru a face aceeași sarcină. Deci, utilizarea pipei este foarte benefică pentru realizarea mai multor tipuri de sarcini într-o formă scurtă.

sintaxă:

comanda1|comanda2|...

Aici, ieșirea comenzii1 va fi transmisă ca intrare a comenzii2.

Același tip de sarcină se face cu țeavă și fără țeavă în partea următoare a acestei secțiuni. Să presupunem că un fișier text numit marks.txt este dat cu următoarele date.

marks.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Trebuie să sortați datele fișierului și să aflați și să tipăriți toată intrarea numelui studentului ‘K da ' . Puteți face această sarcină executând mai multe comenzi fără a utiliza o conductă care este afișată în secțiunea următoare. Următoarele comenzi vor trebui să ruleze pentru a obține rezultatul dorit. Prima comandă va sorta fișierul. A doua comandă va căuta intrarea „K da ' folosind ` prindere `comandați și stocați ieșirea în un temp.txt fişier. A treia comandă va număra liniile totale ale unui temp.txt fișier utilizând `wc` comanda.

$felmarks.txt
$prindere „Keya”marks.txt>temp.txt
$toaleta -latemp.txt

Ieșire:

În fișier există două intrări ale studentului, „Keya”. Deci, după executarea comenzilor de mai sus, va apărea următoarea ieșire.

Puteți combina cu ușurință cele trei comenzi de mai sus și puteți obține aceeași ieșire executând o singură comandă cu o conductă care este afișată în următoarea comandă. Aici nu este necesar niciun fișier temporar pentru a obține ieșirea. Aici, ieșirea din „ fel comanda `va fi transmisă ca intrare a„ prindere comanda `și ieșirea din„ prindere Comanda `va fi transmisă ca intrare pentru `wc` comanda.

$felmarks.txt| prindere „Keya” | toaleta -la

Ieșire:

După executarea comenzii de mai sus, veți obține următoarea ieșire, precum ieșirea comenzii anterioare. Ieșirea comenzii va fi 2.

Mergeți la început

Concluzie:

Cele mai utile subiecte necesare ale limbajului scripting bash sunt încercate să acopere în acest tutorial. Sper că cititorul va fi beneficiat după ce a citit acest tutorial și va putea scrie script bash mai eficient.