Programare în bash - partea 2

Partea a doua din aceasta mini-tutorial programare în Bash, unde învățăm să folosim cicluri și alte instrumente care ne vor ajuta să îmbunătățim funcționalitățile noastre script-uri.

Condiționalul If

Funcția If este de a aplica un filtru și de a efectua o operație sau o sarcină pentru fiecare tip de filtru aplicat. Structura sa este următoarea:

Dacă [condiție]; apoi comenzi elif [condiție]; apoi altfel comanda; comenzi fi

Un exemplu este afișat lângă bucla For în secțiunea sa respectivă.

Cicluri

1. În timp ce: va executa toate comenzile specificate între do și done atâta timp cât condiția este adevărată. Dacă dorim să îi transmitem operatorii de comparație, expresia trebuie să fie între paranteze.

în timp ce CONDITION / COMMAND face comenzi făcute

Exemplu: tabelul de înmulțire al unui număr

#! / bin / bash X = 1 echo "Introduceți un număr și apăsați ENTER" citiți M # Bucla controlează că X este mai mic sau egal cu 10 în timp ce [$ X –le 10] face # În R stocăm multiplicarea lui X cu MR = $ [X * M] # Această multiplicare este tipărită pe ecran ecou „$ M * $ X = $ R” # Cu let, mărim valoarea lui X cu 1 unitate let X = $ X + 1 done

2. Pentru: stochează o listă de elemente într-o variabilă, care va fi utilizată pentru a efectua anumite operații cu fiecare ciclu.

pentru VARIABLE în ELEMENTE executați comenzi

Exemplu: program care copiază un fișier dintr-un folder în altul, înlocuind un fișier vechi.

# / bin / bash # Stabilim directoare sursă și destinație ORIGINĂ = / acasă / utilizator / Descărcări DESTINAȚIE = / acasă / utilizator / Documente # Ne poziționăm în sursa cd $ ORIGINĂ #Din toate fișierele, vrem doar cel care este # apelați FILE pentru FILE în * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f ne filtrează fișierele obișnuite, deoarece directoarele sunt #nimic bune pentru noi. –Nt filtrează # fișiere „mai noi” decât cele # găsite în folderul de destinație dacă [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; apoi ecou „Copiere $ FILE ...” # copiem fișierul cu cp cp $ FILE $ ARCH-DESTINATION fi done #We cd to exit the source folder cd

Un alt exemplu: script în care utilizatorul trebuie să ghicească un număr aleatoriu generat de computer.

# / bin / bash # Un număr aleatoriu este generat de la 1 la 10, este # salvat în RANDOM RANDOM = $ [$ RANDOM% 10 + 1] în timp ce [1] face ecou –n "Introduceți un număr:" citiți NUM # Comparați dacă numărul ales de utilizator este # egal cu RANDOM; nu uitați să folosiți $ pentru a evalua #valorile variabilelor și nu numele lor dacă [„$ NUM –eq„ $ RANDOM ”]; apoi ecou „Ai înțeles bine!” #break permite terminarea buclei în timp ce pauza #Dacă numărul este mai mic decât RANDOM elif [„$ NUM –gt„ $ RANDOM ”]; atunci ecou "Este mai puțin" "Dacă nu, este mai mare decât RANDOM altfel ecou" ESTE mai mare "fi făcut

3. Până la: destul de asemănător ca structură cu While, cu excepția faptului că codul se execută întotdeauna în timp ce evaluarea condiției este negativă, adică programul continuă să se execute „până când apare condiția”

până când CONDITION / COMMAND execută comenzile

Exemplu: tipăriți numerele 10-20 în ordine descrescătoare

#! / bin / bash CONT = 20 # Atâta timp cât contorul este mai mic de 10 (-lt, „mai mic # decât”) codul este executat până la [$ CONT -lt 10]; faceți ecou „COUNTER $ CONT” #A CONT este scăzut de o unitate lăsați CONT- = 1 terminat

4. Selectați: acest ultim ciclu este un caz special, deoarece este utilizat în general pentru a crea meniuri rapid. Funcționează similar cu bucla For.

selectați VARIABLE în LISTA comenzilor efectuate

Exemplu: oferiți utilizatorului posibilitatea de a continua sau de a termina scriptul.

#! / bin / bash #item este o variabilă care răspunde la ceea ce alege utilizatorul, Continuă și Finalizează sunt #opțiuni disponibile pentru el, deși alte opțiuni pot fi adăugate # mai multe elemente selectate în Continuare Finalizare face #Dacă utilizatorul alege încheiem programul, apoi cu pauză ieșim din ciclu. dacă [$ item = "Finish"]; apoi rupe-te gata
Mulțumesc Juan Carlos Ortiz!

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Mediu dificil el a spus

    Cred că așa ceva: tar -cf - Director | (cd / alt / director; tar -xvf -)

    Apoi ar arăta ca / ​​alt / director / Director
    În acest fel am comprimat un Director și îl decomprimiți în alt loc ...

  2.   Miguel Angel el a spus

    Bună, tuto bun, învăț despre subiect și totul este în regulă, doar că nu am reușit să fac un program care să mă ajute, vezi dacă mă poți ajuta te rog.

    Trebuie să fac un ciclu, în care va primi ca parametri lista unui fișier sursă, această listă aduce doar nume (fără extensie), astfel încât ciclul să facă următoarele, căutați numele respectiv primit într-un director (care este cel pe care îl vom căuta) , extrageți și copiați fișierul (numele complet deja cu extensie) și calea absolută și creați-l într-un alt fișier de destinație.

    Până acum am următoarele:

    în timp ce citiți linia
    do
    echo -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    gata <testlist.txt Până acum am citit fișierul, fiecare rând pe care îl are, dar nu pot să-l fac să caute acel fișier și să extrag informațiile, dacă mă puteți ajuta vă rog, vă mulțumesc. Noroc

  3.   Pamela galaviz el a spus

    Vă mulțumesc foarte mult pentru contribuție 🙂

  4.   Mario Xavier el a spus

    salut ... Sper că vă puteți ajuta în următoarea practică ... Dezarhivați fișierul în tgz în directorul specificat, pe lângă specificarea utilizatorului și grupului pentru toate directoarele și fișierele existente și atribuirea permisiunilor fișierelor și directoarelor
    notă: fișiere gata pentru citire și scriere
    permisiunea de executare a directoarelor

  5.   Ioane el a spus

    ARCH-DESTINATION este o variabilă în care dorim să salvăm calea fișierului de destinație, cu excepția redundanței. Apoi, acestei variabile îi indicăm variabila DESTINAȚIE, care mai sus conține calea către folderul Documente și adăugăm „variabila” FILE, care conține numele fișierului. Dacă acel fișier ar fi, de exemplu, list.doc, variabila ARCH-DESTINATION ar fi egală cu /home/Usuario/Documentos/listado.doc

  6.   Să folosim Linux el a spus

    Este articolul anterior. O puteți accesa de la http://usemoslinux.blogspot.com

    Îmbrăţişare! Paul.

  7.   Sincer el a spus

    Bună dimineața prietene, mulțumesc, blogul tău este foarte bun, dar nu pot obține prima parte a programării în Bash, unde o primesc mulțumesc, salutări

  8.   Saito Mordraw el a spus

    Două părți extraordinare, felicitările mele sincere.

    Pur și simplu minunat.

  9.   Fredy el a spus

    Bien

  10.   Hugo el a spus

    Bună ziua, fac un program cu un CASE, ce vreau să facă și nu știu cum, de exemplu:

    echo Selectează o opțiune:
    ecou
    ecou 1. opțiunea 1
    ecou 2. opțiunea 2
    ecou 3. opțiunea 3
    ecou 4. opțiunea 4
    ecou 5. Ieșiți
    citeste var
    cazul „$ var” în
    1)
    ecou „Ați selectat opțiunea 1”
    ;;
    2)
    ecou „Ați selectat opțiunea 2”
    ;;
    3)
    aruncat "….."
    ;;
    4)
    aruncat "…."
    ;;
    5)
    aruncat "…"

    ;;
    *)
    ecou „opțiune greșită”
    ;;
    ESAC

    ok ceea ce nu știu cum să fac este că atunci când selectez opțiunea 4 care este să ies, să întreb dacă vreau cu adevărat să ies și să-mi dai 2 opțiuni Y & N

    iar cealaltă este că atunci când selectați altceva decât numerele 1..5 nu mă votați din scenariu….

    M-ai putea ajuta, mulțumesc.

  11.   DAPAMA21 el a spus

    Bună, am început să fac scripturi acum o lună și datorită postărilor dvs. de script. Voi fi făcut aproximativ 1-15. Vă mulțumesc foarte mult anticipat. Dar acum profesorul nostru ne-a dat o slujbă din care am devenit stagnant. Întrucât profesorul întreabă:
    trecând un director, copiați acasă toate fișierele care se află în acel director alfabetic și le denumiți fișier1 fișier2 etc ... etc ...
    Acum sunt în momentul găsirii sau localizării, am vrut să folosesc găsirea, dar când i-am dat un cod de eroare, așa cum l-am introdus prin dev nul, permisiunile refuzate, atunci mă înșel și pun localizarea sunt aici:
    localizați $ 1 | grep "/ $ {1} \ $"
    dar bineînțeles cu asta ies toți ...
    Vă mulțumesc foarte mult dacă l-ați citit.
    Dacă mă puteți ajuta, ar fi o mare favoare.

  12.   luis el a spus

    Aș vrea să mă ajuți cu asta.
    1.-Introduceți un număr întreg pe tastatură și afișați de două ori și triplați acest număr pe ecran. 2.- Faceți un program pentru a decide dacă un număr introdus de tastatură este divizibil cu 3 sau nu.
    3.- Realizați un program pentru a găsi suma: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Realizați un program pentru a găsi suma 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Realizați un program care imprimă cuvântul Linux pe ecran de 10 ori
    6.-Realizați un program care imprimă cuvântul Linux pe ecran de câte ori este indicat de un utilizator.
    7.-Introduceți o sumă în ore și convertiți-le în minute și secunde.
    8.-Calculați aria unui triunghi
    9.-Introduceți un număr de tastatură, apoi, dacă introduceți 2, acesta ar trebui să fie pătrat, 3 în cuburi, 4 la al patrulea și așa mai departe până la 6.
    10-Calculați pensia pe care trebuie să o plătească un student, trebuie introdus codul de specialitate și zilele restante:
    COD
    SPECIALITATE
    CANTITATE
    ÎN TIMPUL ZILEI
    1
    TEHNICA DE CALCUL
    160
    1
    2
    ASISTENȚĂ MEDICALĂ
    150
    1.5
    3
    SECRETARIAT
    140
    2
    4
    TURISMO
    180
    2.5
    5
    CONTABILITATE
    160
    1
    Trebuie să arătați specialitatea pe care o studiați, costul pensiei, neplata și suma totală care trebuie plătită.

  13.   Charly el a spus

    Buna, ma poate ajuta cineva?
    Am nevoie de „Solicitați trei cuvinte de la tastatură și afișați-le în ordine alfabetică de la A la z”
    În limbajul Bash sau sh pentru LINUX porfaborrrr