Dowiedz się, jak obliczyć literę DNI za pomocą skryptu Bash

Po spełnieniu wymagań wymagania dla móc uruchamiać skrypty bash, i rozumiem jak definiować funkcje, Naucz się jak zwracają wartości w funkcjach basha. W tym celu stworzymy mały, ale potężny program w Bash obliczyć litery DNI. Mam dobrą wiadomość: Bash też może być zainstalowane w systemie Windows 10. Z tym, co można dodać całą moc Linuksa w systemach operacyjnych, powiedzmy ... inaczej.

Przede wszystkim musimy zrozumieć, jak podciągi, który jak w każdym języku ma taką możliwość zwraca części łańcucha ze wskazania łańcucha, pozycji i długości segmentu. Spójrzmy na przykład takiego zachowania. Tworzymy nasz skrypt za pomocą

$ touch prueba_substring
$ 

Następnie dodajemy następujący kod z preferowanym edytorem. W trybie terminala mój ulubiony edytor to mcedit. Ale ostatnio widzę, że nano zyskuje na sile.

 
#!/usr/bin/env bash 
# Demo comportamiento de substrings en Bash 
# Pedro Ruiz Hidalgo 
# version 1.0.0 
# Febrero 2017 

ret="\n" 
CADENA="siempre uso Linux con Ubuntu y Ubunlog, claro!" 
#      "0123456789012345678901234567890123456789012345" 
#      "          1         2         3         4     " 
# (usa la regla para medir los caracteres) 

echo -e $ret ${CADENA:12} 
echo -e $ret ${CADENA:12:5} 
echo -e $ret "Aprendo en ${CADENA:31:7}" 
exit 0 

Dodanie uprawnień i wykonanie w ten sposób:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Powinien, jeśli wszystko poszło dobrze, zwrócić następujący wynik:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Operacja podłańcucha

Jak widać powyżej Podkreśliłem wiersze od 13 do 15 skryptu i przejdź do wyjaśnij swój kod. Echo z parametr „-e” pokażmy znak następnego wiersza, zdefiniowaliśmy ten znak w wiersz 7 i przypisany do zmiennej «ret».

Linia 13: pokazuję podciąg (podciąg) zmiennej CHAIN, opisanej w linii 8, od pozycji 12. Zawsze zaczynam liczyć od pozycji 0.

Wiersz 14: Od pozycja 12 zmiennej CHAIN, pokazuję segment 5. Jak sprawdzisz, odpowiada to podciąg „Linux”.

Wiersz 15: tworzę nowy ciąg w cudzysłowie Zaczynam od „Uczę się w”, aby kontynuować podłańcuch zmiennej CHAIN z pozycji 31, biorąc odcinek 7: odpowiada «Ubunlog».

Funkcje ogłaszania zwrotnego

Mechanizm powrotu z Bash jest tworzony przez polecenie "return", chociaż kiedy musimy dopasować go do zmiennej Bash, implementuje on "dziwny" mechanizm, do którego trzeba się przyzwyczaić. Spójrzmy na następujący przykład:

#!/usr/bin/env bash

function suma(){
  local a=$1
  local b=$2
  return $(( $a + $b ))
}

suma 12 23
retorno=$?
echo $retorno

Funkcje należy zawsze zdefiniować przed użyciem ich w Bashw związku z tym po szulernia deklarujemy sumę funkcji w linii 4 określamy za pomocą „lokalnego” przypisanie pierwszego z parametrów ($ 1) do zmiennej „a”. Identyczna procedura na linii 5, gdzie przypisujemy drugi parametr a ($ 2) do zmiennej «b». W linii dziewiątej wywołujemy funkcję sumy z dwoma parametrami, które zostaną przekonwertowane przez mechanizm opisany w zmienne „a” i „b” i przy „return” zwracamy je dodane, jak można łatwo zauważyć w instrukcji funkcji.

Zmienną „return” przypisujemy w linia 10 wynik wykonania funkcji suma.

Po przestudiowaniu i zrozumieniu sposobu, w jaki Zwroty wartości i przypisanie do zmiennych są praktykowane Chodźmy, aby zobaczyć nasz program obliczanie liter DNI za pomocą Bash.

Skrypt do obliczania liter DNI za pomocą Bash

#!/usr/bin/env bash

nl="\n"

LETRAS="TRWAGMYFPDXBNJZSQVHLCKEO"
NORMAL=0
ERROR=66

if [ $# -lt 1 ];
then
	echo -e "$nl Cálculo DNI, introduce número$nl"
	read -r ndni
	[ -z "${ndni//[0-9]}" ] && [ -n "$ndni" ] || echo "Sólo números" && exit $ERROR
else
	ndni=$1
fi

modulo ()
{
	return $(( $ndni  % 23 ))
}

modulo ndni
mod=$?
echo $ndni-${LETRAS:$mod:1}
exit $NORMAL

La list naszego DNI odpowiada moduł liczbowy 23. To jest, liczbę dzielimy przez 23 y zamiast patrzeć na iloraz, obserwujemy resztę podziału. Inne słowa, jak liczby podzielne przez 23 dadzą zero, list, który odpowiada temu jest „T”, od tego jest pozycją 0, jak widzieliśmy w powyższym skrypcie, wszystkie podciągi zaczynają liczyć od zera. Oznacza to, że z modułem zawsze uzyskamy liczby od 0 (litera „T”) do 22 (litera „O”). W Bash, podobnie jak w innych językach moduł jest uzyskiwany za pomocą operatora procentowego „%”.

W linia 5 definiujemy litery w Twoim zamówieniu. To jest oczywiste, kolejności nie można zmienić dla wiarygodnych wyników. W przypadku linii 9 pytamy jeśli podczas wywoływania skryptu jako parametr była liczba. Jeśli nie ma parametru, żądamy tego za pomocą klawiatury zgodnie z instrukcjami w wierszach od 11 do 13. Jeśli skrypt został wywołany z liczbą w celu obliczenia kolejności w wierszu 15, przypisz ten parametr do zmiennej «ndni».

W linii 23 odwołujemy się do funkcji modulo poprzez parametr of zmienna «ndni», albo została zebrana jako parametr w bash, albo przez klawiaturę jako dane wejściowe. W linii 24. powrót funkcji jest przypisany do zmiennej „mod”. Na linii 25 mpokazujemy liczbę, myślnik i literę odpowiadającą pozycji zgodnie z obliczeniem modułu i podciągu.

Testowanie naszego skryptu DNI

$ ./dni 12345678
12345678-Z

No cóż,

$ ./dni

 Cálculo DNI, Introduce número

Wszystkie nasze skrypty powinny zawierać parametr „-a” dla autora i drugi „-h” dla pomocy i składni. Jak widzieliśmy w poprzednich artykułach, albo pozostawiam Wam to, aby kod nie był bardziej uciążliwy.
Mam nadzieję, że ten artykuł wzbudził Twoje zainteresowanie.


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.   Omar B.M. powiedział

    Witam, czy ktoś może mi pomóc? Muszę zainstalować lubuntu na moim starym komputerze stacjonarnym, ale nie pozwala mi na instalację przez USB, a napęd DVD jest uszkodzony, chcę tylko zainstalować http://www.plop.at do Ubuntu 16.04 LTS, ale nie wiem, jak to zrobić. Dzięki

    1.    Symbol zastępczy dla Pedro Ruiz Hidalgo powiedział

      Omar

      Jak wspomniałeś, sytuacja nie jest zbyt obiecująca: USB nie jest dozwolone, a napęd DVD jest uszkodzony. Ale komentujesz też, że „komputer jest stary”, czyli masz nowy. Spróbuj umieścić instalację na dysku twardym z działającego komputera i spróbować zainstalować ją z tego dysku.

      pozdrowienia

    2.    Cesar Deba powiedział

      Masz komputer i wyjmowane pudełko? Zamontuj dysk twardy starego komputera w wymiennym pudełku USB i uruchom dysk instalacyjny.
      Linux i Unix nie biorą pod uwagę sprzętu na poziomie rozruchu, za pomocą którego można ponownie umieścić dysk z zainstalowanym linuxem.

    3.    Omar B.M. powiedział

      Dziękuję bardzo. Mówię wam, że to, co zrobiłem, to przejście z Ubuntu 16.04 na Lubuntu 16.04 w tym samym systemie operacyjnym, hehe, więc mój stary komputer działał dobrze hehe pozdrowienia z Kolumbii.