Introduction to Bash Scripting 06 - A Simple "If" Statement
Cuprins:
ifDeclarațieif..elseif..elif..elseDeclarație- Cuibărit
ifdeclarații - Condiții multiple
- Operatori de testare
- Concluzie
Luarea deciziilor este unul dintre cele mai fundamentale concepte ale programării computerizate. Ca în orice alt limbaj de programare,
if
,
if..else
,
if..elif..else
și nested
if
instrucțiuni în Bash pot fi utilizate pentru a executa cod pe baza unei anumite condiții.
În acest tutorial, vă vom parcurge elementele de bază ale Bash
if
instrucțiuni și vă vom arăta cum să le utilizați în scripturile dvs. shell.
if
Declarație
Bash
if
condiționatele pot avea diferite forme. Cea mai de bază declarație
if
are următoarea formă:
if TEST-COMMAND then STATEMENTS fi
Instrucțiunea
if
începe cu cuvântul cheie
if
urmat de expresia condiționată și de cuvântul cheie de
then
. Instrucțiunea se încheie cu cuvântul cheie
fi
.
Dacă
TEST-COMMAND
evaluează „
True
, declarațiile vor fi executate. Dacă
TEST-COMMAND
returnează
False
, nu se întâmplă nimic, declarațiile vor fi ignorate.
În general, este o practică bună să indentizați codul și să separați blocurile de cod cu linii necompletate. Majoritatea oamenilor aleg să folosească indentare cu 4 spații sau cu 2 spații. Indentările și liniile necompletate vă fac codul mai lizibil și mai organizat.
Să ne uităm la următorul exemplu de script care verifică dacă un număr dat este mai mare de 10.
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi
Salvați codul într-un fișier și executați-l de pe linia de comandă:
bash test.sh
Scriptul vă va solicita să introduceți un număr. Dacă, de exemplu, introduceți 15, comanda
test
va evalua la
true
deoarece 15 este mai mare de 10, iar comanda
echo
din clauza de
then
va fi executată.
The variable is greater than 10.
if..else
Instrucțiunea Bash
if..else
ia următoarea formă:
if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi
Dacă
TEST-COMMAND
evaluează la
True
,
STATEMENTS1
va fi executat. În caz contrar, dacă
TEST-COMMAND
returnează
False
,
STATEMENTS2
vor fi executate. Puteți avea o singură clauză în instrucțiune.
Să adăugăm o
else
clauză la scriptul de exemplu anterior:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi
if..elif..else
Declarație
Instrucțiunea Bash
if..elif..else
ia următoarea formă:
if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi
Dacă
TEST-COMMAND1
evaluează la
True
,
STATEMENTS1
va fi executat. Dacă
TEST-COMMAND2
evaluează la
True
,
STATEMENTS2
vor fi executate. Dacă niciuna din comenzile de testare nu este evaluată la
True
,
STATEMENTS2
este executat.
Puteți avea una sau mai multe clauze
elif
în enunț. Clauza
else
este opțională.
Condițiile sunt evaluate secvențial. Odată ce o condiție revine
True
, condițiile rămase nu sunt efectuate și controlul programului se mută la sfârșitul instrucțiunilor
if
.
Să adăugăm o clauză
elif
la scriptul precedent:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi
Cuibărit
if
declarații
Bash vă permite să cuibărească în
if
în care declarații în
if
declarațiilor. Puteți plasa mai multe
if
declarația în interiorul unei alte instrucțiuni
if
.
Următorul script vă va solicita să introduceți trei numere și va imprima cel mai mare număr dintre cele trei numere.
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi
Iată cum va arăta ieșirea:
Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number.
În loc să folosiți instrucțiuni cuibărit
if
, de obicei, este mai eficient să folosiți instrucțiunea de caz.
Condiții multiple
Operatorii
OR
și
AND
logici vă permit să utilizați mai multe condiții în instrucțiunile
if
.
Iată o altă versiune a scriptului pentru a tipări cel mai mare număr dintre cele trei numere. În această versiune, în loc de instrucțiunile imbricate
if
, vom folosi operatorul
AND
(
&&
) logic.
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi
Operatori de testare
În Bash, comanda
test
are una dintre următoarele forme de sintaxă:
test EXPRESSION]
Pentru a anula expresia de testare, utilizați operatorul logic
NOT
(
!
). Atunci când compară șiruri, folosiți întotdeauna ghilimele simple sau duble pentru a evita probleme de împărțire sau împărțire a cuvintelor.
Mai jos sunt câteva dintre cei mai utilizați operatori:
-
-nVAR- Adevărat dacă lungimea VAR este mai mare decât zero.-zVAR- Adevărat dacă VAR este gol.STRING1 = STRING2- True [STRING1 și STRING2 sunt egale.STRING1 != STRING2- True STRING1 și STRING2 nu sunt egale.INTEGER1 -eq INTEGER2- True INTEGER1 și INTEGER2 sunt egale.INTEGER1 -gt INTEGER2- True INTEGER1 este mai mare decât INTEGER2.INTEGER1 -lt INTEGER2- True INTEGER1 este mai mic decât INTEGER2.INTEGER1 -ge INTEGER2- True INTEGER1 este egal sau mai mare decât INTEGER2.INTEGER1 -le INTEGER2- True INTEGER1 este egal sau mai mic decât INTEGER2.-hFILE- Adevărat dacă fișierul există și este o legătură simbolică.-rFILE- Adevărat dacă fișierul există și poate fi citit.-wFILE- Adevărat dacă fișierul există și poate fi scris.-xFILE- Adevărat dacă FILE există și este executabil.-dFILE- Adevărat dacă fișierul există și este un director.-eFILE- Adevărat dacă fișierul există și este un fișier, indiferent de tip (nod, director, soclu etc.).-fFILE- Adevărat dacă fișierul există și este un fișier obișnuit (nu un director sau dispozitiv).
Concluzie
Instrucțiunile
if
,
if..else
și
if..elif..else
vă permit să controlați fluxul de execuție a scriptului Bash prin evaluarea condițiilor date.
Iată micul element din piesa TG Daily:
Dispozitivul va fi echipat cu o tehnologie care este "într-adevăr, într-adevăr, aproape" de o actualitate. Consola, care a fost descrisă ca având o "interfață naturală", va avea o cameră încorporată, cu capacitatea de a recunoaște mișcarea și vocea. Bine, întoarce-te, oprește presa, verifică realitatea. Bazându-mă pe acest snip, văd cu sinceritate tot felul de posibilități de interpretare, deși foarte puține care mă conduc la ceva de genul 1UP Microsoft a respins "revendicate Xbox 360" revendica
Este modelul OQO 2+ devenind un element colector?
Calculatorul ultramobilat OQO Model 2+ poate deveni un element colector după atragerea unor oferte ridicate pe eBay
Amazon: Kindle este cel mai talentat element vreodată
Mai multe cărți electronice au fost vândute decât cele tradiționale - dar cine face cumpărături de Crăciun? > Cititorul de cărți electronice Amazon Kindle a lovit un moment de referință în ziua de Crăciun, când, pentru prima dată, clienții au cumpărat mai multe cărți Kindle







