Android

Bash if..element statement

Introduction to Bash Scripting 06 - A Simple "If" Statement

Introduction to Bash Scripting 06 - A Simple "If" Statement

Cuprins:

Anonim

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:

  • -n VAR - Adevărat dacă lungimea VAR este mai mare decât zero. -z VAR - 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. -h FILE - Adevărat dacă fișierul există și este o legătură simbolică. -r FILE - Adevărat dacă fișierul există și poate fi citit. -w FILE - Adevărat dacă fișierul există și poate fi scris. -x FILE - Adevărat dacă FILE există și este executabil. -d FILE - Adevărat dacă fișierul există și este un director. -e FILE - Adevărat dacă fișierul există și este un fișier, indiferent de tip (nod, director, soclu etc.). -f FILE - 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.

terminalul bash