Uzziniet, kā aprēķināt DNI burtu, izmantojot Bash skriptu

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.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Omārs BM teica

    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

    1.    Pedro Ruiza Hidalgo viettura attēls teica

      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

    2.    Sezars Delba teica

      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.

    3.    Omārs BM teica

      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.