Programowanie w bashu - część 2

Część druga tego mini samouczek programowanie w Bash, gdzie uczymy się używać cykle i inne narzędzia, które pomogą nam ulepszyć funkcjonalność naszego skrypty.

Jeśli warunkowe

Funkcja If polega na zastosowaniu filtru i wykonaniu operacji lub zadania dla każdego typu zastosowanego filtru. Jego struktura jest następująca:

Jeśli [warunek]; następnie polecenia elif [warunek]; wtedy jeszcze polecenia; fi polecenia

Przykład jest pokazany obok pętli For w odpowiedniej sekcji.

Cyklos

1. While: wykona wszystkie polecenia określone między do i done, o ile warunek będzie prawdziwy. Jeśli chcemy przekazać do niego operatory porównania, wyrażenie musi znajdować się w nawiasach.

podczas gdy CONDITION / COMMAND wykonuje polecenia

Przykład: tabliczka mnożenia liczby

#! / bin / bash X = 1 echo "Wpisz liczbę i naciśnij ENTER" przeczytaj M # Pętla kontroluje, że X jest mniejsze lub równe 10, podczas gdy [$ X –le 10] do # W R przechowujemy mnożenie X by MR = $ [X * M] # To mnożenie jest wypisywane na ekranie echo "$ M * $ X = $ R" # Z let, zwiększamy wartość X o 1 jednostkę niech X = $ X + 1 gotowe

2. Dla: przechowuje listę elementów w zmiennej, które będą używane do wykonywania określonych operacji w każdym cyklu.

dla VARIABLE w ELEMENTS wykonaj polecenia wykonane

Przykład: program, który kopiuje plik z jednego folderu do drugiego, zastępując stary plik.

# / bin / bash # Ustanawiamy katalogi źródłowe i docelowe ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Ustawiamy się w źródłowym cd $ ORIGIN # Ze wszystkich plików chcemy tylko tego, który to # wywołanie PLIKU dla PLIKU w * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f filtruje nam zwykłe pliki, ponieważ katalogi # nie są dla nas niczym dobrym. –Nt odfiltrowuje # plików „nowszych” niż te # znalezione w folderze docelowym, jeśli [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; następnie echo "Kopiowanie $ FILE ..." # kopiujemy plik za pomocą cp cp $ FILE $ ARCH-DESTINATION fi gotowe #We cd, aby wyjść z folderu źródłowego cd

Inny przykład: skrypt, w którym użytkownik musi odgadnąć losową liczbę wygenerowaną przez komputer.

# / bin / bash # Losowa liczba jest generowana od 1 do 10, jest # zapisywana w RANDOM RANDOM = $ [$ RANDOM% 10 + 1], podczas gdy [1] do echo –n "Podaj liczbę:" przeczytaj NUM # Porównaj, czy liczba wybrana przez użytkownika jest # równa LOSOWO; pamiętaj, aby użyć znaku $ do oceny # wartości zmiennych, a nie ich nazw, jeśli [„$ NUM –eq„ $ RANDOM ”]; następnie echo "Dobrze!" #break umożliwia zakończenie pętli podczas przerwy #Jeśli liczba jest mniejsza niż RANDOM elif [„$ NUM –gt„ $ RANDOM ”]; następnie echo "Jest mniej" "Jeśli nie, jest większe niż LOSOWO w przeciwnym razie echo" JEST większe "fi gotowe

3. Do: struktura dość podobna do While, z tą różnicą, że kod jest wykonywany zawsze, gdy ocena warunku jest ujemna, to znaczy program kontynuuje wykonywanie „aż do wystąpienia warunku”

dopóki CONDITION / COMMAND nie wykonają poleceń

Przykład: wydrukuj liczby 10-20 w porządku malejącym

#! / bin / bash CONT = 20 # Tak długo, jak licznik jest mniejszy niż 10 (-lt, „lower #than”), kod jest wykonywany aż do [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT jest odejmowane przez jednostkę niech CONT- = 1 gotowe

4. Wybierz: ten ostatni cykl jest przypadkiem szczególnym, ponieważ jest zwykle używany do szybkiego tworzenia menu. Działa podobnie do pętli For.

wybierz VARIABLE w LISTA wykonanych poleceń

Przykład: daj użytkownikowi możliwość kontynuowania lub kończenia skryptu.

#! / bin / bash #item to zmienna, która odpowiada na to, co wybierze # użytkownik. Opcje Kontynuuj i Zakończ są dostępne dla niego, chociaż można dodać inne opcje. kończymy program, następnie z przerwą wychodzimy z cyklu. if [$ item = "Finish"]; następnie break fi gotowe
Dziękuję Juan Carlos Ortiz!

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Średnio trudne powiedział

    Myślę, że coś takiego: tar -cf - Directory | (cd / inne / katalog; tar -xvf -)

    Wtedy wyglądałoby to tak, jak / another / directory / Directory
    W ten sposób skompresowałem katalog, a ty rozpakujesz go w innym miejscu….

  2.   Miguel Angel powiedział

    Witam, dobry tuto, poznaję temat i wszystko jest w porządku, tylko nie udało mi się stworzyć programu, który mi pomaga, żeby zobaczyć, czy możesz mi pomóc.

    Muszę zrobić cykl, w którym otrzymam jako parametry listę pliku źródłowego, ta lista zawiera tylko nazwy (bez rozszerzenia), aby cykl wykonywał następujące czynności, poszukaj wspomnianej nazwy otrzymanej w katalogu (czyli ten, którego będziemy szukać), wypakuj i skopiuj plik (pełna nazwa już z rozszerzeniem) oraz ścieżkę bezwzględną i utwórz go w innym pliku docelowym.

    Do tej pory mam:

    podczas czytania linii
    do
    echo -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    gotowe <testlist.txt Do tej pory przeczytałem plik, każdą jego linię, ale nie mogę sprawić, by wyszukał ten plik i wyodrębnił informacje. Jeśli możesz mi pomóc, dziękuję. Twoje zdrowie

  3.   Pamela galaviz powiedział

    Bardzo dziękuję za wkład 🙂

  4.   Mario Xavier powiedział

    cześć ... Mam nadzieję, że pomożesz w następnej praktyce ... Rozpakuj plik w tgz w podanym katalogu, oprócz określenia użytkownika i grupy dla wszystkich istniejących katalogów i plików oraz przypisania uprawnień do plików i katalogów
    uwaga: pliki gotowe do czytania i pisania
    uprawnienia do wykonywania katalogów

  5.   Juank powiedział

    ARCH-DESTINATION to zmienna, w której chcemy zapisać ścieżkę do pliku docelowego, zachowując ją do redundancji. Następnie do tej zmiennej wskazujemy zmienną DESTINATION, która powyżej zawiera ścieżkę do folderu Dokumenty oraz dodajemy „zmienną” PLIK, która zawiera nazwę pliku. Gdyby ten plik był na przykład list.doc, zmienna ARCH-DESTINATION byłaby równa /home/Usuario/Documentos/listado.doc

  6.   Użyjmy Linuksa powiedział

    To jest poprzedni artykuł. Możesz uzyskać do niego dostęp pod adresem http://usemoslinux.blogspot.com

    Przytulić! Paweł.

  7.   Szczery powiedział

    Dzień dobry kolego tylko dziękuję, bardzo dobry twój blog, ale nie mogę dostać pierwszej części Programowania w Bash, gdzie dostaję dzięki, pozdrawiam

  8.   Saito Mordraw powiedział

    Dwie niezwykłe role, serdecznie gratuluję.

    Po prostu wspaniałe.

  9.   Fredy powiedział

    Bien

  10.   Hugo powiedział

    Witam, tworzę program z CASE, co chcę, żeby robił i nie wiem jak, na przykład:

    echo wybiera opcję:
    przegapić
    echo 1. opcja 1
    echo 2. opcja 2
    echo 3. opcja 3
    echo 4. opcja 4
    echo 5. Zakończ
    przeczytaj var
    przypadek „$ zmienna” w
    1)
    echo "Wybrałeś opcję 1"
    ;;
    2)
    echo "Wybrałeś opcję 2"
    ;;
    3)
    wyrzucił "….."
    ;;
    4)
    wyrzucił "…."
    ;;
    5)
    wyrzucił "…"

    ;;
    *)
    echo „zła opcja”
    ;;
    to C

    ok, nie wiem, jak to zrobić, to kiedy wybieram opcję 4, która ma wyjść, pytam, czy naprawdę chcę wyjść, i daj mi 2 opcje T & N

    a druga jest taka, że ​​gdy wybierzesz coś innego niż cyfry 1..5 nie głosuj na mnie ze skryptu….

    Czy możesz mi pomóc, dzięki.

  11.   DAPAMA21 powiedział

    Cześć, zacząłem pisać skrypty miesiąc temu i dzięki Twoim postom skryptowym. Zrobiłem około 1-15. Z góry bardzo dziękuję. Ale teraz nasz nauczyciel dał nam pracę, w której popadłem w stagnację. Ponieważ nauczyciel pyta:
    przekazując katalog, skopiuj do swojego domu wszystkie pliki, które są w tym katalogu alfabetycznie i nadając im nazwy plik1 plik2 itd ... itd ...
    Teraz jestem w momencie znajdowania lub lokalizowania, chciałem użyć find, ale kiedy podałem mu kod błędu, taki jak w przypadku dev null, odmówiono uprawnień, a potem się mylę i umieszczam lokalizację, w której jestem:
    zlokalizuj $ 1 | grep "/ $ {1} \ $"
    ale oczywiście z tym wszyscy wychodzą ...
    Dziękuję bardzo, jeśli to przeczytałeś.
    Jeśli możesz mi pomóc, byłaby to wielka przysługa.

  12.   Luis powiedział

    Chciałbym, żebyś mi w tym pomógł.
    1. -Wprowadź całą liczbę za pomocą klawiatury i wyświetl dwukrotnie i potrójną liczbę na ekranie. 2. - Stwórz program, który zdecyduje, czy liczba wprowadzona z klawiatury jest podzielna przez 3, czy nie.
    3.- Stwórz program, który znajdzie sumę: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Stwórz program, aby znaleźć sumę 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Stwórz program, który wypisze słowo Linux na ekranie 10 razy
    6. -Stwórz program, który wypisze słowo Linux na ekranie tyle razy, ile wskazał użytkownik.
    7.-Wprowadź kwotę w godzinach i zamień je na minuty i sekundy.
    8.-Obliczyć powierzchnię trójkąta
    9.-Wprowadź liczbę na klawiaturze, a jeśli wpiszesz 2, powinna być podniesiona do kwadratu, 3 do kostki, 4 do czwartej i tak dalej, aż do 6.
    10-Oblicz emeryturę, którą student musi zapłacić, należy wpisać kod specjalności i dni zaległości:
    KOD
    SPECJALNOŚĆ
    ILOŚĆ
    CZAS TRWANIA DZIENNIE
    1
    PRZETWARZANIE DANYCH
    160
    1
    2
    PIELĘGNIARSTWO
    150
    1.5
    3
    SEKRETARIAT
    140
    2
    4
    TURYSTYKA
    180
    2.5
    5
    KSIĘGOWOŚĆ
    160
    1
    Musisz wykazać specjalność, na której się uczysz, koszt emerytury, zaległość oraz całkowitą kwotę do wypłaty.

  13.   Charly powiedział

    Witam, czy ktoś może mi pomóc?
    Potrzebuję „Poproś o trzy słowa za pomocą klawiatury i wyświetl je w kolejności alfabetycznej od A do z”
    W języku Bash lub sh dla LINUX porfaborrrr