Pēc apmierināšanas Prasības par jāspēj palaist bash skriptus, un saprast kā definēt funkcijas, iemācies kā atgriešanās vērtības bash funkcijās. Šim nolūkam mēs izveidosim nelielu, bet spēcīgu programmu Bash aprēķināt DNI burtus. Man ir labas ziņas: arī Bešs var instalēt operētājsistēmā Windows 10. Ar ko var pievienot visu Linux jaudu operētājsistēmās, teiksim ... atšķirīgi.
Pirmkārt, mums tas ir jādara saprast, kā apakšvirknes, kurai, tāpat kā jebkurā valodā, ir iespēja atgriezt virknes daļas no ķēdes norādes, segmenta pozīcijas un garuma. Apskatīsim šīs uzvedības piemēru. Mēs izveidojam savu skriptu ar
$ touch prueba_substring $
Tad mēs pievienojam šo kodu ar vēlamo redaktoru. Termināla režīmā mans vēlamais redaktors ir mcedit. Bet pēdējā laikā es redzu, ka nano iegūst spēku.
#!/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
Atļauju pievienošana un izpilde šādi:
$ chmod +x prueba_substring $ ./prueba_substring $
Ja viss noritēja labi, tam būtu jāatgriež šāds rezultāts:
Linux Con Ubuntu y Ubunlog, claro! Linux Aprendo en Ubunlog
Substringa darbība
Kā jūs varat redzēt iepriekš Es esmu izcēlis 13. līdz 15. rindu no skripta un soli uz paskaidrojiet savu kodu. Atbalss ar parametrs "-e" ļauj parādīt nākamās rindas raksturs, mēs esam definējuši šo rakstzīmi 7. rinda un piešķirta mainīgajam «ret».
13. rindiņa: es parādīju apakšvirkni (apakšvirsraksts) CHAIN mainīgā lieluma, kas aprakstīts 8. rindā, no 12. pozīcijas. Vienmēr sāk skaitīt no 0 pozīcijas.
14. rinda: No mainīgā CHAIN 12. pozīcijā es parādīju segmentu 5. Kā jūs pārbaudīsit, tas atbilst apakšvirkne "Linux".
15. rinda: es sacerēju a jauna virkne, kas ievietota pēdiņās Es sāku kā «es mācos iekšā», lai turpinātu ar CHAIN mainīgā apakšvirkni no 31. pozīcijas, ņemot segmentu 7: tas atbilst «Ubunlog».
Postback funkcijas
Atgriešanās mehānismu ar Bash ražo komanda "return", lai gan, kad mums tas jāpielīdzina Bash mainīgajam, tas ievieš "dīvainu" mehānismu, pie kura jums jāpierod. Apskatīsim šādu piemēru:
#!/usr/bin/env bash function suma(){ local a=$1 local b=$2 return $(( $a + $b )) } suma 12 23 retorno=$? echo $retorno
Funkcijas vienmēr ir jādefinē, pirms tās tiek izmantotas Bash, tāpēc pēc zaņķis mēs deklarējam funkciju summu 4. rindā mēs ar “vietējo” definējam pirmā parametra piešķiršanu ($ 1) mainīgajam "a". Identiska procedūra 5. rindā, kur otro parametru a ($ 2) piešķiram mainīgajam «b». Devītajā rindā mēs saucam summas funkciju ar diviem parametriem, kurus pārveidos ar mehānismu, kas aprakstīts mainīgie "a" un "b" un ar "return" mēs tos atgriežam pievienotus, kā to viegli var redzēt funkciju instrukcijās.
Mēs piešķiram mainīgo "return" 10. rinda ir funkciju summas izpildes rezultāts.
Pēc studijām un izpratnes par to, kādā veidā Tiek praktizētas vērtību atgriešanās un piešķiršana mainīgajiem Apmeklēsim mūsu programmu DNI burtu aprēķins ar Bash.
Skripts, lai aprēķinātu DNI burtus ar 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 mūsu DNI vēstule atbilst skaitļu modulis 23. Tas ir, mēs dalām skaitli ar 23 y tā vietā, lai skatītos koeficientu, mēs novērojam pārējo dalījumu. Pārējie vārdi, piemēram, skaitļi, kas dalās ar 23, dos nulli, vēstule, ka atbilst tam ir «T», kopš šī ir 0 pozīcija, kā mēs redzējām iepriekšminētajā scenārijā, visi apakšvirknes sāk skaitīt no nulles. Tas ir, ar moduli mēs vienmēr iegūsim skaitļus starp 0 (burts "T") un 22 (burts "O"). Bašā, tāpat kā citās valodās modulis tiek iegūts, izmantojot procentuālo operatoru «%».
Jo 5. rinda mēs definējam burtus jūsu pasūtījumā. Tas ir acīmredzami, kārtību nevar mainīt lai iegūtu ticamus rezultātus. Ja rindiņā 9 mēs jautājam ja, izsaucot skriptu, kā parametrs bija norādīts skaitlis. Ja parametra nav, mēs to pieprasām uz tastatūras ar norādījumiem no 11. līdz 13. rindai. Ja skripts tika izsaukts ar numuru, lai aprēķinātu secību 15. rindā, piešķiriet šo parametru mainīgajam «ndni».
23. rindā mēs atsaucamies uz modulo funkciju, izmantojot parametru mainīgais «ndni», vai nu tas ir savākts kā parametrs bash, vai ar tastatūru kā ievade. 24. rindā funkcijas atgriešana tiek piešķirta mainīgajam «mod». 25 m līnijāmēs parādām skaitli, domuzīmi un burtu, kas atbilst pozīcijai saskaņā ar moduļa un apakšvirsmas aprēķinu.
Pārbauda mūsu DNI skriptu
$ ./dni 12345678 12345678-Z
Labi,
$ ./dni Cálculo DNI, Introduce número
Visos mūsu skriptos jāiekļauj autora parametrs "-a", bet palīdzība un sintakse - vēl viens "-h". Kā mēs redzējām iepriekšējos rakstos, vai es to atstāju jums, lai nepadarītu kodu apgrūtinošāku.
Es ceru un ceru, ka šis raksts ir bijis jūsu interese.
Sveiki, vai kāds var man palīdzēt, man ir jāinstalē lubuntu manā vecajā darbvirsmā, bet tas neļaus man instalēt, izmantojot USB, un DVD disks ir bojāts, es tikai gribu instalēt http://www.plop.at uz Ubuntu 16.04 LTS, bet es nezinu, kā to izdarīt. Paldies
Omārs,
Kā jau minējāt, situācija nav pārāk daudzsološa: USB nav atstāts un DVD disks ir bojāts. Bet jūs arī komentējat, ka "dators ir vecs", tas nozīmē, ka jums ir jauns. Mēģiniet instalēt instalāciju cietajā diskā no sava datora un mēģināt instalēt to no šī diska.
Sveicieni
Vai jums ir dators un noņemama kaste? Uzstādiet vecā datora cieto disku noņemamajā USB lodziņā un sāciet instalēšanas disku.
Linux un Unix neņem vērā aparatūru sāknēšanas līmenī, ar kuru jūs varat atkal ievietot disku ar instalētu Linux.
Liels paldies, es jums saku, ka tas, ko es darīju, bija pāriet no Ubuntu 16.04 uz Lubuntu 16.04 tajā pašā operētājsistēmā hehe, un tieši tāpēc mans vecais dators darbojās labi hehe sveicieni no Kolumbijas.