Kọ ẹkọ bii o ṣe le ṣe iṣiro lẹta DNI nipa lilo iwe afọwọkọ Bash kan

 

Lẹhin ti itelorun awọn awọn ibeere si ni anfani lati ṣiṣe awọn iwe afọwọkọ bash, ati oye bii a ṣe le ṣalaye awọn iṣẹ, kọ ẹkọ bii awọn iye pada ni awọn iṣẹ bash. Fun eyi a yoo ṣẹda eto kekere “ṣugbọn alagbara” ni Bash pe ṣe iṣiro awọn lẹta ti DNI. Mo ni awọn iroyin ti o dara: Bash le tun fi sori ẹrọ lori Windows 10. Pẹlu ohun ti a le fi kun gbogbo agbara Linux ni awọn ọna ṣiṣe, jẹ ki a sọ ... yatọ.

Ni akọkọ, a ni lati ni oye bi awọn awọn orisun, eyi ti, bi ni eyikeyi ede, ni o ni awọn seese ti pada awọn ẹya ti okun kan lati itọkasi pq, ipo ati ipari ti abala naa. Jẹ ki a wo apẹẹrẹ ti ihuwasi yii. A ṣẹda iwe afọwọkọ wa pẹlu

$ touch prueba_substring
$ 

Lẹhinna a ṣafikun koodu atẹle pẹlu olootu ti o fẹ julọ. Ni ipo ebute olootu ti o fẹ mi jẹ mcedit. Ṣugbọn laipẹ Mo rii pe nano n ni agbara.

 
#!/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 

Fifi awọn igbanilaaye sii ati ṣiṣẹ bi eleyi:

$ chmod +x prueba_substring
$ ./prueba_substring
$

O yẹ ki, ti ohun gbogbo ba lọ daradara, da abajade atẹle pada:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Okun Isẹ

Bi o ti le rii loke Mo ti ṣe afihan awọn ila 13 si 15 ti akosile ati igbesẹ si ṣalaye koodu rẹ. iwoyi pẹlu paramita "-e" jẹ ki a fihan awọn ohun kikọ laini atẹle, a ti ṣalaye iwa yii ninu laini 7 ti a fun si oniyipada «ret».

Laini 13: Mo fihan ohun elo naa (orisun) ti ayípadà CHAIN, ti a sapejuwe ni ila 8, lati ipo 12. Nigbagbogbo bẹrẹ lati ka lati ipo 0.

Laini 14: Lati ipo 12 ti iyipada CHAIN, Mo fihan apa kan ti 5. Bi iwọ yoo rii daju pe eyi baamu si orisun "Linux".

Laini 15: Mo ṣajọ a okun tuntun ti o wa ninu awọn agbasọ Mo bẹrẹ bi «Mo kọ ẹkọ ni«, lati tẹsiwaju pẹlu iyọkuro ti iyipada CHAIN lati ipo 31, mu apa kan ti 7: eyi baamu "Ubunlog".

Awọn iṣẹ Sẹhin

Ọna ipadabọ pẹlu Bash ni a ṣe nipasẹ aṣẹ “ipadabọ”, botilẹjẹpe, nigba ti a ni lati baamu rẹ si oniyipada Bash kan, o n ṣe ilana “ajeji” kan, eyiti o ni lati lo lati. Jẹ ki a wo apẹẹrẹ wọnyi:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Awọn iṣẹ gbọdọ wa ni asọye nigbagbogbo ṣaaju lilo wọn ni Bash, nitorina, lẹhin ti awọn shebang a ṣalaye apao iṣẹ, lori laini 4 a ṣalaye nipasẹ ọna «agbegbe» iṣẹ iyansilẹ ti akọkọ ti awọn ipele ($ 1) si oniyipada "a". Ilana idanimọ lori laini 5, nibo a fi paramita keji kan ($ 2) si oniyipada «b». Ni laini mẹsan a pe iṣẹ apao pẹlu awọn ipele meji ti yoo yipada nipasẹ siseto ti a ṣalaye ninu awọn oniyipada "a" ati "b" ati pẹlu "ipadabọ" a da wọn pada kun, bi a ṣe le rii awọn iṣọrọ ninu awọn itọnisọna iṣẹ.

A fi oniyipada "ipadabọ" sinu laini 10 abajade ti ipaniyan ti apao iṣẹ.

Lẹhin ti keko ati oye ọna ninu eyiti awọn pada ti awọn iye ati iṣẹ iyansilẹ si awọn oniyipada ti nṣe Jẹ ki a lọ wo eto wa ti iṣiro awọn lẹta DNI pẹlu Bash.

Iwe afọwọkọ lati ṣe iṣiro awọn lẹta DNI pẹlu 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 lẹta ti DNI wa O baamu nọmba module 23. Eyi ni, a pin nomba na pelu 23 y Dipo wiwo ni ipin, a kiyesi iyoku pipin naa. Awọn ọrọ miiran, bii awọn nọmba ti a pin nipasẹ 23 yoo fun odo, lẹta ti ni ibamu si rẹ ni «T», niwon eyi ipo 0 ni, bi a ti rii ninu iwe afọwọkọ loke, gbogbo awọn orisun kekere bẹrẹ kika lati odo. Iyẹn ni pe, pẹlu module a yoo gba awọn nọmba nigbagbogbo laarin 0 (lẹta "T") ati 22 (lẹta "O"). Ni Bash, bi ninu awọn ede miiran a gba module naa nipasẹ oluṣakoso ogorun “%».

Ni laini 5 a ṣalaye awọn lẹta naa ninu ibere re. O han gbangba, aṣẹ ko le yipada fun awọn esi to gbẹkẹle. Ni awọn ti o ba ti ila 9 a n beere ti o ba jẹ pe nigba pipe iwe afọwọkọ naa nọmba kan wa bi paramita. Ti ko ba si paramita, a beere rẹ lori bọtini itẹwe pẹlu awọn itọnisọna lori ila 11 si 13. Ti a ba pe iwe afọwọkọ pẹlu nọmba kan lati ṣe iṣiro aṣẹ lori laini 15, fi paramita yii si oniyipada “ndni”.

Ni laini 23 a tọka si iṣẹ modulo nipasẹ ipilẹṣẹ ti oniyipada «ndni», boya o ti gba bi paramita ni bash, tabi nipasẹ keyboard bi titẹ sii. Ninu laini 24 ipadabọ iṣẹ naa ti ni ipin si oniyipada «mod». Lori laini 25 ma ṣe afihan nọmba naa, idasi kan ati lẹta ti o baamu si ipo ni ibamu si iṣiro ti modulu ati okun.

Idanwo iwe afọwọkọ DNI wa

 

$ ./dni 12345678
12345678-Z

O dara,

$ ./dni

 Cálculo DNI, Introduce número

Gbogbo awọn iwe afọwọkọ wa yẹ ki o ni ipilẹṣẹ “-a” fun onkọwe ati “-h” miiran fun iranlọwọ ati sintasi. Gẹgẹ bi a ti rii ninu awọn nkan iṣaaju tabi Mo fi silẹ fun ọ lati ma ṣe ki koodu naa di pupọ diẹ sii.
Mo nireti ati nireti pe nkan yii ti jẹ anfani rẹ.


Awọn akoonu ti nkan naa faramọ awọn ilana wa ti awọn ilana olootu. Lati jabo aṣiṣe kan tẹ nibi.

Awọn asọye 4, fi tirẹ silẹ

Fi ọrọ rẹ silẹ

Adirẹsi imeeli rẹ yoo ko le ṣe atejade.

*

*

  1. Lodidi fun data naa: Miguel Ángel Gatón
  2. Idi ti data naa: SPAM Iṣakoso, iṣakoso ọrọ asọye.
  3. Ofin: Iyọọda rẹ
  4. Ibaraẹnisọrọ data: Awọn data kii yoo ni ifọrọhan si awọn ẹgbẹ kẹta ayafi nipasẹ ọranyan ofin.
  5. Ibi ipamọ data: Alaye data ti o gbalejo nipasẹ Awọn nẹtiwọọki Occentus (EU)
  6. Awọn ẹtọ: Ni eyikeyi akoko o le ni opin, gba pada ki o paarẹ alaye rẹ.

  1.   Omar BM wi

    Kaabo, ṣe ẹnikan le ran mi lọwọ, Mo nilo lati fi lubuntu sori tabili mi atijọ ṣugbọn kii yoo jẹ ki n fi sori ẹrọ nipasẹ USB ati pe awakọ DVD ti bajẹ, Mo kan fẹ lati fi sii http://www.plop.at si Ubuntu 16.04 LTS ṣugbọn Emi ko mọ bi a ṣe le ṣe. O ṣeun

    1.    Pedro Ruiz Hidalgo aworan ibi ipamọ wi

      Omar,

      Bi o ti mẹnuba, ipo naa ko ni ileri pupọ: a ko gba laaye USB ati pe awakọ DVD ti bajẹ. Ṣugbọn iwọ tun sọ asọye pe “kọnputa ti atijọ”, iyẹn tumọ si pe o ni tuntun kan. Gbiyanju fifi fifi sori ẹrọ lori dirafu lile lati kọmputa ti n ṣiṣẹ rẹ ati igbiyanju lati fi sii lati kọnputa yẹn.

      Dahun pẹlu ji

    2.    Cesar Deba wi

      Ṣe o ni kọnputa ati apoti iyọkuro? Fi sori ẹrọ dirafu lile ti kọmputa atijọ ninu apoti USB yọkuro ati bẹrẹ disiki fifi sori ẹrọ.
      Linux ati Unix ko ṣe akiyesi ohun elo ti o wa ni ipele bata, pẹlu eyiti o le fi disiki sii lẹẹkan pẹlu fifi sori ẹrọ Linux.

    3.    Omar BM wi

      O ṣeun pupọ Mo sọ fun ọ pe ohun ti Mo ṣe ni lati lọ lati Ubuntu 16.04 si Lubuntu 16.04 laarin ẹrọ iṣiṣẹ kanna hehe ati pe bẹ ni kọnputa atijọ mi ti n ṣiṣẹ daradara hehe ikini lati Columbia.