Nakon zadovoljenja zahtjevi za biti u mogućnosti pokretati bash skripte, i razumjeti kako definirati funkcije, nauči kako vratiti vrijednosti u bash funkcijama. Za to ćemo stvoriti mali "ali moćan" program u Bashu koji izračunati slova DNI-a. Imam dobre vijesti: I Bash može biti instaliran na Windows 10. Uz ono što se može dodati sva snaga Linuxa u operativnim sustavima, recimo ... drugačije.
Prije svega, moramo razumjeti kako podnizove, koji, kao i u bilo kojem jeziku, ima mogućnost vratiti dijelove niza od naznake lanca, položaja i duljine segmenta. Pogledajmo primjer takvog ponašanja. Stvaramo našu skriptu sa
$ touch prueba_substring $
Zatim dodamo sljedeći kod s vašim preferiranim uređivačem. U modulu terminala moj omiljeni urednik je mcedit. Ali u posljednje vrijeme vidim da nano dobiva na snazi.
#!/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
Dodavanje dozvola i izvršavanje ovako:
$ chmod +x prueba_substring $ ./prueba_substring $
Trebalo bi, ako je sve prošlo u redu, vratiti sljedeći rezultat:
Linux Con Ubuntu y Ubunlog, claro! Linux Aprendo en Ubunlog
Indeks
Operacija podniza
Kao što vidite gore Istaknuo sam retke 13 do 15 od skripte i koraka do objasnite svoj kod. Odjek s parametar "-e" dopustimo pokazati znak sljedećeg retka, ovaj smo lik definirali u redak 7 i dodjeljuje se varijabli «ret».
Redak 13: Prikazujem podniz (podniz) varijable CHAIN, opisane u retku 8, s položaja 12. Uvijek počinje računati s položaja 0.
Redak 14: Od položaj 12 varijable CHAIN, prikazujem segment 5. Kao što ćete provjeriti, ovo odgovara podniz "Linux".
Redak 15: Sastavljam a novi niz zatvoren u navodnike Počinjem kao «učim u», da bih nastavio s podnizom varijable CHAIN s položaja 31, uzimajući segment 7: ovo odgovara "Ubunlog".
Postback funkcije
Mehanizam povratka s Bashom proizvodi naredba "return", iako, kad ga moramo uskladiti s varijablom Bash, on implementira "čudan" mehanizam, na koji se morate naviknuti. Pogledajmo sljedeći primjer:
#!/usr/bin/env bash function suma(){ local a=$1 local b=$2 return $(( $a + $b )) } suma 12 23 retorno=$? echo $retorno
Funkcije moraju uvijek biti definirane prije korištenja u Bashu, dakle, nakon šajkača deklariramo zbroj funkcije, u retku 4 definiramo pomoću «lokalnog» dodjelu prvog od parametara ($ 1) na varijablu "a". Identičan postupak na liniji 5, gdje dodijelimo drugi parametar a ($ 2) varijabli «b». U devetom retku nazivamo funkciju zbroja s dva parametra koja će se pretvoriti mehanizmom opisanim u varijable "a" i "b", a uz "return" vraćamo ih dodane, što se lako može vidjeti u uputama za funkciju.
Varijablu "return" dodjeljujemo u redak 10 rezultat izvršenja zbroja funkcije.
Nakon proučavanja i razumijevanja načina na koji Vježbaju se povrati vrijednosti i dodjeljivanje varijablama Idemo vidjeti naš program izračun DNI slova s Bashom.
Skripta za izračunavanje DNI slova s Bashom
#!/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 pismo našeg DNI-a Odgovara brojevni modul 23. Ovo je, broj dijelimo s 23 y umjesto gledanja količnika, promatramo ostatak podjele. Druge riječi, poput brojevi djeljivi sa 23 dat će nulu, slovo koje odgovara joj je «T», budući da ovo je položaj 0, kao što smo vidjeli u gornjem scenariju, svi podnizovi počinju brojati od nule. Odnosno, s modulom ćemo uvijek dobiti brojeve između 0 (slovo "T") i 22 (slovo "O"). U Bashu, kao i u drugim jezicima modul se dobiva pomoću postotnog operatora «%».
u redak 5 definiramo slova po tvojoj narudžbi. Očito je, redoslijed se ne može mijenjati za pouzdane rezultate. U liniji if 9 pitamo ako je prilikom pozivanja skripte kao parametar bio broj. Ako nema parametra, tražimo ga na tipkovnici s uputama na redovima od 11 do 13. Ako je skripta pozvana brojem za izračunavanje redoslijeda u retku 15, dodijelite ovaj parametar varijabli «ndni».
U retku 23 upućujemo na funkciju modula kroz parametar varijabla «ndni», ili je prikupljena kao parametar u bashu, ili pomoću tipkovnice kao ulaz. U retku 24 povratak funkcije dodjeljuje se varijabli «mod». Na liniji od 25 mprikazujemo broj, crticu i slovo koje odgovara položaju prema izračunu modula i podniza.
Testiranje naše DNI skripte
$ ./dni 12345678 12345678-Z
Pa dobro,
$ ./dni Cálculo DNI, Introduce número
Sve naše skripte trebaju sadržavati parametar "-a" za autora i još jedan "-h" za pomoć i sintaksu. Kao što smo vidjeli u prethodnim člancima ili prepuštam vama da izbjegnete stvaranje koda glomaznije.
Nadam se i nadam se da vas je ovaj članak zanimao.
4 komentara, ostavi svoj
Pozdrav, može li mi netko pomoći, moram instalirati lubuntu na svoju staru radnu površinu, ali neće mi dopustiti instalaciju putem USB-a, a DVD pogon je oštećen, samo želim instalirati http://www.plop.at na Ubuntu 16.04 LTS, ali ne znam kako to učiniti. Hvala
Omar,
Kao što ste spomenuli, situacija nije previše obećavajuća: usb nije lijev i DVD pogon oštećen. Ali također komentirate da je "računalo staro", to znači da imate novo. Pokušajte instalirati instalaciju na tvrdi disk s radnog računala i pokušati je instalirati s tog pogona.
pozdravi
Imate li računalo i prijenosnu kutiju? Postavite tvrdi disk starog računala u prijenosni USB pretinac i pokrenite instalacijski disk.
Linux i Unix ne uzimaju u obzir hardver na razini pokretanja, s kojim možete ponovo staviti disk s instaliranim Linuxom.
Puno vam hvala, kažem vam da sam ono što sam učinio bio da sam prešao s Ubuntu 16.04 na Lubuntu 16.04 unutar istog operativnog sustava hehe i tako je moje staro računalo radilo dobro hehe pozdrav iz Kolumbije.