Po uspokojení požiadavky pre vedieť spustiť bash skriptya pochopiť ako definovať funkcie, naučiť sa ako návratové hodnoty v bash funkciách. Z tohto dôvodu vytvoríme v Bashi malý ―ale výkonný― program vypočítať písmená DNI. Mám dobrú správu: Bash môže tiež byť nainštalovaný na Windows 10. S tým, čo môže dodať všetku silu Linuxu v operačných systémoch, povedzme ... rôzne.
V prvom rade musíme pochopiť, ako podreťazce, ktorý, ako v každom jazyku, má možnosť vrátiť časti reťazca z označenia reťaze, polohy a dĺžky segmentu. Pozrime sa na príklad tohto správania. Náš skript tvoríme pomocou
$ touch prueba_substring $
Potom pridáme nasledujúci kód do vášho preferovaného editora. V terminálnom režime môj preferovaný editor je mcedit. Ale neskoro vidím, že nano naberá 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
Pridanie povolení a takéto spustenie:
$ chmod +x prueba_substring $ ./prueba_substring $
Ak by všetko prebehlo dobre, malo by to vrátiť nasledujúci výsledok:
Linux Con Ubuntu y Ubunlog, claro! Linux Aprendo en Ubunlog
Podreťazcová operácia
Ako môžete vidieť vyššie Zvýraznil som riadky 13 až 15 zo scenára a krok k vysvetli tvoj kod. echo s parameter "-e" Poďme ukázať znak nasledujúceho riadku, tento znak sme definovali v riadok 7 a priradený k premennej «ret».
Riadok 13: Zobrazujem podreťazec (podreťazec) premennej CHAIN, opísanej v riadku 8, z polohy 12. Vždy sa začína počítať od polohy 0.
Riadok 14: Od pozícia 12 premennej REŤAZ, zobrazujem segment 5. Pri overovaní to zodpovedá podreťazec "Linux".
15. riadok: Skladám a nový reťazec uzavretý v úvodzovkách Začínam ako «Učím sa«, aby som pokračoval v podreťazci premennej CHAIN z pozície 31, pričom berie segment 7: toto zodpovedá „Ubunlog“.
Funkcie spätného odoslania
Mechanizmus návratu s Bashom je produkovaný príkazom „return“, aj keď, keď ho musíme priradiť k premennej Bash, implementuje „podivný“ mechanizmus, na ktorý si musíte zvyknúť. Pozrime sa na nasledujúci príklad:
#!/usr/bin/env bash function suma(){ local a=$1 local b=$2 return $(( $a + $b )) } suma 12 23 retorno=$? echo $retorno
Funkcie musia byť vždy definované pred použitím v Bashi, teda po šebang funkčný súčet deklarujeme na riadku 4 definujeme pomocou «lokálneho» priradenie prvého z parametrov ($ 1) k premennej „a“. Rovnaký postup na riadku 5, kde druhý parameter a ($ 2) priradíme premennej «b». V riadku deväť nazývame funkciu súčtu s dvoma parametrami, ktoré sa prevedú mechanizmom opísaným v premenné „a“ a „b“ a pomocou „návratu“ ich vrátime pridané, ako je ľahko viditeľné v pokynoch k funkcii.
Priradíme premennú "návrat" v riadok 10 výsledok vykonania funkčného súčtu.
Po preštudovaní a pochopení spôsobu akým Precvičujú sa návraty hodnôt a priradenie k premenným Poďme sa pozrieť na náš program výpočet písmen DNI pomocou Bash.
Skript na výpočet písmen DNI 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 list nášho DNI zodpovedá číselný modul 23. Toto je, číslo vydelíme 23 y namiesto pohľadu na kvocient pozorujeme zvyšok rozdelenia. Ostatné slová, ako čísla deliteľné 23 budú mať nulu, list, ktorý zodpovedá tomu je «T», pretože toto je pozícia 0, ako sme videli v skripte vyššie, všetky podreťazce sa začnú počítať od nuly. To znamená, že s modulom vždy získame čísla medzi 0 (písmeno „T“) a 22 (písmeno „O“). V jazyku Bash, rovnako ako v iných jazykoch modul sa získa pomocou percenta operátora «%».
V riadok 5 definujeme písmená v objednávke. Je to zrejmé, poradie nie je možné zmeniť pre spoľahlivé výsledky. V prípade riadku 9 pýtame sa ak pri volaní skriptu bolo ako parameter číslo. Ak nie je žiadny parameter, vyžiadame si ho pomocou klávesnice s pokynmi na riadkoch 11 až 13. Ak bol skript vyvolaný číslom na výpočet poradia na riadku 15, priraďte tento parameter k premennej «ndni».
V riadku 23 odkazujeme na funkciu modulo cez parameter premenná «ndni», buď bola zhromaždená ako parameter v bash, alebo pomocou klávesnice ako vstup. V riadku 24 je návrat funkcie priradený premennej «mod». Na trati 25 mzobrazíme číslo, pomlčku a písmeno zodpovedajúce polohe podľa výpočtu modulu a podreťazca.
Testuje sa náš skript DNI
$ ./dni 12345678 12345678-Z
Dobre,
$ ./dni Cálculo DNI, Introduce número
Všetky naše skripty by mali obsahovať parameter „-a“ pre autora a ďalšie „-h“ pre pomoc a syntax. Ako sme už videli v predchádzajúcich článkoch, prenechám to na vás, aby ste sa vyhli ťažkopádnosti kódu.
Dúfam a dúfam, že vás tento článok zaujal.
Dobrý deň, môže mi niekto pomôcť, musím na moju starú plochu nainštalovať lubuntu, ale nedovolí mi to inštalovať cez USB a DVD mechanika je poškodená, chcem len nainštalovať http://www.plop.at na Ubuntu 16.04 LTS, ale neviem, ako na to. Vďaka
Omar,
Ako ste spomenuli, situácia nie je veľmi nádejná: USB nie je povolené a jednotka DVD je poškodená. Tiež však komentujete, že „počítač je starý“, to znamená, že máte nový. Skúste nainštalovať inštaláciu na pevný disk z pracovného počítača a pokúste sa ju nainštalovať z tejto jednotky.
pozdravy
Máte počítač a odnímateľnú skrinku? Pripojte pevný disk starého počítača do odnímateľného usb boxu a spustite inštalačný disk.
Linux a Unix neberú do úvahy hardvér na bootovacej úrovni, pomocou ktorého môžete disk znovu vložiť s nainštalovaným linuxom.
Ďakujem veľmi pekne, hovorím vám, že to, čo som urobil, bolo prejsť z Ubuntu 16.04 na Lubuntu 16.04 v rámci toho istého operačného systému hehe, a tak môj starý počítač fungoval dobre, pozdravuje z Kolumbie.