Научите да израчунавате ДНИ слово помоћу Басх скрипте

Након задовољења Захтеви пар бити у могућности да покреће басх скрипте, и разумети како дефинисати функције, научите како враћају вредности у басх функцијама. За ово ћемо на Басх-у створити мали „али моћан“ програм израчунати слова ДНИ. Имам добре вести: И Басх може бити инсталиран на Виндовс 10. Уз оно што се може додати сва снага Линука у оперативним системима, рецимо ... другачије.

Пре свега, морамо разумети како субстрингс, који, као и у сваком језику, има могућност врати делове низа од индикације ланца, положаја и дужине сегмента. Погледајмо пример овог понашања. Ми креирамо нашу скрипту са

$ touch prueba_substring
$ 

Затим додајемо следећи код са жељеним уређивачем. У модулу терминала мој омиљени уредник је мцедит. Али у последње време видим да нано добија на снази.

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

Додавање дозвола и извршавање овако:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Требало би, ако је све прошло у реду, вратити следећи резултат:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Операција подниза

Као што видите горе Истакао сам редове 13 до 15 од сценарија и корака до објасните свој код. Одјек са параметар "-е" допустимо да прикажемо знак следећег реда, овај карактер смо дефинисали у ред 7 и додељује се променљивој «рет».

Ред 13: Приказујем подниз (подстринг) променљиве ЦХАИН, описане у реду 8, са положаја 12. Увек почиње да рачуна од позиције 0.

Ред 14: Од позиција 12 променљиве ЦХАИН, показујем сегмент 5. Као што ћете потврдити, ово одговара подниз "Линук".

Ред 15: Састављам а нови низ затворен у наводнике Почињем као «учим у», да бих наставио са поднизом променљиве ЦХАИН са позиције 31, узимајући сегмент 7: ово одговара «Ubunlog».

Постбацк функције

Механизам повратка са Басхом производи наредба „ретурн“, мада, када га морамо повезати са променљивом Басх, он примењује „чудан“ механизам, на који се морате навикнути. Погледајмо следећи пример:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Функције морају увек бити дефинисане пре употребе у Басх-у, дакле, после ствар декларишемо суму функције, у реду 4 дефинишемо помоћу «локалног» додељивање првог од параметара ($ 1) на променљиву „а“. Идентичан поступак на линији 5, где додељујемо други параметар а ($ 2) променљивој «б». У деветом реду позивамо функцију суме са два параметра која ће се претворити механизмом описаним у променљиве "а" и "б" и са "ретурн" их враћамо додате, што се лако може видети у упутствима за функцију.

Променљиву „ретурн“ додељујемо у ред 10 резултат извршења збира функције.

Након проучавања и разумевања начина на који вежбају се поврати вредности и додељивање променљивим Идемо да видимо наш програм израчунавање ДНИ слова са Басх-ом.

Скрипта за израчунавање ДНИ слова помоћу Басха

#!/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 писмо нашег ДНИ Одговара бројевни модул 23. Ово је, број делимо са 23 y уместо да гледамо количник, посматрамо остатак поделе. Друге речи, као бројеви дељиви са 23 даће нулу, писмо које одговара му је «Т», јер ово је позиција 0, као што смо видели у горњем сценарију, сви поднизови почињу да се броје од нуле. Односно, са модулом ћемо увек добити бројеве између 0 (слово "Т") и 22 (слово "О"). У Басху, као и у другим језицима модул се добија помоћу процента оператора «%».

У ред 5 дефинишемо слова по вашем налогу. То је очигледно, редослед се не може променити за поуздане резултате. У линији иф 9 питамо ако је приликом позивања скрипте као параметар био број. Ако не постоји параметар, тражимо га на тастатури са упутствима на редовима од 11 до 13. Ако је скрипта позвана бројем за израчунавање редоследа у реду 15, доделите овај параметар променљивој «ндни».

У ретку 23 упућујемо на функцију модула кроз параметар променљива «ндни», или је прикупљена као параметар у басх-у, или помоћу тастатуре као улаз. У реду 24 повратак функције додељује се променљивој «мод». На линији од 25 мприказујемо број, цртицу и слово које одговара положају према прорачуну модула и подниза.

Тестирање наше ДНИ скрипте

$ ./dni 12345678
12345678-Z

О добро,

$ ./dni

 Cálculo DNI, Introduce número

Све наше скрипте треба да садрже параметар „-а“ за аутора и још један „-х“ за помоћ и синтаксу. Као што смо видели у претходним чланцима, или остављам вама да не правите код гломазнији.
Надам се и надам се да вас је овај чланак занимао.


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   Омар БМ дијо

    Поздрав, може ли неко да ми помогне, морам да инсталирам лубунту на своју стару радну површину, али то ми не дозвољава да инсталирам преко УСБ-а и ДВД погон је оштећен, само желим да инсталирам http://www.plop.at до Убунту 16.04 ЛТС, али не знам како то да урадим. Хвала

    1.    Слика резервног места Педро Руиз Хидалго дијо

      Омар,

      Као што сте споменули, ситуација није превише обећавајућа: усб није дозвољен, а ДВД погон оштећен. Али такође коментаришете да је „рачунар стар“, то значи да имате нови. Покушајте да инсталирате инсталацију на чврсти диск са радног рачунара и покушате да је инсталирате са тог диска.

      поздрави

    2.    Цесар Делба дијо

      Да ли имате рачунар и преносиву кутију? Поставите чврсти диск старог рачунара у преносиву УСБ кутију и покрените инсталациони диск.
      Линук и Уник не узимају у обзир хардвер на нивоу покретања, помоћу којег можете поново ставити диск са инсталираним линуком.

    3.    Омар БМ дијо

      Пуно вам хвала, кажем вам да сам оно што сам урадио био да сам прешао са Убунту 16.04 на Лубунту 16.04 у оквиру истог оперативног система хехе и тако је мој стари рачунар радио добро хехе поздрав из Колумбије.