Sužinokite, kaip apskaičiuoti DNI raidę naudojant „Bash“ scenarijų

Patenkinęs reikalavimai punktas mokėti paleisti bash scenarijusir suprask kaip apibrėžti funkcijas, išmokti kaip grąžinimo reikšmės „bash“ funkcijose. Tam mes sukursime mažą „bet galingą“ programą „Bash“ apskaičiuokite DNI raides. Turiu gerų žinių: Bashas taip pat gali būti įdiegta „Windows 10“. Su kuo galima pridėti visą „Linux“ galią operacinėse sistemose, sakykime ... kitaip.

Visų pirma turime suprasti, kaip pakraščiai, kuri, kaip ir bet kuria kalba, turi galimybę grąžinti stygos dalis nuo grandinės nurodymo, segmento padėties ir ilgio. Pažvelkime į tokio elgesio pavyzdį. Mes kuriame savo scenarijų

$ touch prueba_substring
$ 

Tada pridedame šį kodą su jūsų pageidaujamu redaktoriumi. Terminalo režimu mano pageidaujamas redaktorius yra mcedit. Tačiau pastaruoju metu matau, kad nano stiprėja.

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

Pridėdami leidimus ir vykdydami taip:

$ chmod +x prueba_substring
$ ./prueba_substring
$

Jei viskas pavyko gerai, ji turėtų pateikti šį rezultatą:

 Linux Con Ubuntu y Ubunlog, claro!

 Linux

 Aprendo en Ubunlog

Substringo operacija

Kaip matote aukščiau Aš paryškinau 13–15 eilutes nuo scenarijaus ir pereiti prie paaiškinkite savo kodą. Aidas su parametras „-e“ leidžia parodyti kitos eilutės simbolis, mes apibūdinome šį simbolį 7 eilutė ir priskirta kintamajam „ret“.

13 eilutė: rodau poskyrį (antrinė eilutė) CHAIN ​​kintamojo, aprašyto 8 eilutėje, iš 12 pozicijos. Visada pradedama skaičiuoti nuo 0 pozicijos.

14 eilutė: nuo CHAIN ​​kintamojo 12 pozicijoje rodau 5 segmentą. Kaip įsitikinsite, tai atitinka substring „Linux“.

15 eilutė: Aš sukuriu a nauja eilutė, uždėta kabutėse Pradedu kaip „mokausi“, kad galėčiau tęsti kintamojo CHAIN ​​substring iš 31 pozicijos, imant 7 segmentą: tai atitinka «Ubunlog».

Grąžinimo funkcijos

Grąžinimo mechanizmą su „Bash“ sukuria komanda „grįžti“, nors, kai turime jį suderinti su „Bash“ kintamuoju, jis įgyvendina „keistą“ mechanizmą, prie kurio turite priprasti. Pažvelkime į šį pavyzdį:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

Funkcijos visada turi būti apibrėžtos prieš jas naudojant „Bash“, todėl po šebangas deklaruojame funkcijos sumą, 4 eilutėje mes apibūdiname „lokaliu“ būdu pirmojo parametro priskyrimą ($ 1) kintamajam „a“. Identiška procedūra 5 eilutėje, kur antrąjį parametrą a ($ 2) priskiriame kintamajam «b». Devintoje eilutėje mes vadiname sumos funkciją dviem parametrais, kurie bus konvertuoti pagal aprašytą mechanizmą kintamieji „a“ ir „b“, o su „return“ mes juos grąžiname pridėtus, kaip lengvai galima pamatyti funkcijų instrukcijose.

Priskiriame kintamąjį „return“ 10 eilutė yra funkcijos sumos vykdymo rezultatas.

Išstudijavęs ir suprasdamas, kaip Praktikuojamos vertybių grąžos ir priskyrimas kintamiesiems Eikime pažiūrėti mūsų programos DNI raidžių skaičiavimas su Bash.

Scenarijus DNI raidėms apskaičiuoti naudojant „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ūsų DNI laiškas Tai atitinka skaičių modulis 23. Tai yra, skaičių padalijame iš 23 y užuot žiūrėję į koeficientą, stebime likusią dalybą. Kiti žodžiai, pavyzdžiui, skaičiai, dalijami iš 23, suteiks nulį, laiškas atitinka tai yra «T», nes tai yra 0 pozicija, kaip matėme aukščiau esančiame scenarijuje, visos eilutės pradedamos skaičiuoti nuo nulio. Tai yra, su moduliu mes visada gausime skaičius tarp 0 (raidė „T“) ir 22 (raidė „O“). Basų kalba, kaip ir kitomis kalbomis modulis gaunamas naudojant procentinį operatorių «%».

Į 5 eilutėje mes apibrėžiame raides savo tvarka. Tai akivaizdu, tvarka negali būti pakeista už patikimus rezultatus. Jei eilutėje 9 mes klausiame jei skambinant scenarijui parametras buvo numeris. Jei parametro nėra, mes paprašome jo klaviatūra su instrukcijomis 11–13 eilutėse. Jei scenarijus buvo iškviestas skaičiumi, norint apskaičiuoti eilutės eilutę 15 eilutėje, priskirkite šį parametrą kintamajam „ndni“.

23 eilutėje mes nurodome modulo funkciją per parametrą kintamasis „ndni“, arba jis buvo surinktas kaip parametras „bash“, arba klaviatūra kaip įvestis. 24 eilutėje funkcijos grąžinimas priskiriamas kintamajam „mod“. 25 m linijojemes parodome skaičių, brūkšnį ir raidę, atitinkančią padėtį pagal modulio ir poskyrio apskaičiavimą.

Testuojamas mūsų DNI scenarijus

$ ./dni 12345678
12345678-Z

Gerai,

$ ./dni

 Cálculo DNI, Introduce número

Visuose mūsų scenarijuose turėtų būti parametras „-a“ autoriui ir kitas „-h“, jei reikia pagalbos ir sintaksės. Kaip matėme ankstesniuose straipsniuose, arba palieku jums, kad nepadarytumėte kodo sudėtingesnio.
Tikiuosi ir tikiuosi, kad šis straipsnis jus domino.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   Omaras BM sakė

    Sveiki, ar gali kas nors man padėti, turiu įdiegti lubuntu į savo seną darbalaukį, bet tai neleis man įdiegti per USB ir DVD diskų įrenginys yra pažeistas, aš tiesiog noriu įdiegti http://www.plop.at į „Ubuntu 16.04 LTS“, bet aš nežinau, kaip tai padaryti. Dėkoju

    1.    Pedro Ruiz Hidalgo vietos rezervavimo įvaizdis sakė

      Omaras

      Kaip minėjote, situacija nėra labai perspektyvi: USB neleidžiama, o DVD diskas yra sugadintas. Bet jūs taip pat pakomentuojate, kad „kompiuteris yra senas“, vadinasi, turite naują. Pabandykite įdėti diegimą į standųjį diską iš veikiančio kompiuterio ir pabandyti jį įdiegti iš to disko.

      saludos

    2.    Cezaris Delba sakė

      Ar turite kompiuterį ir išimamą dėžę? Įstatykite senojo kompiuterio standųjį diską į išimamą USB dėžutę ir paleiskite diegimo diską.
      „Linux“ ir „Unix“ neatsižvelgia į aparatinę įrangą įkrovos lygiu, su kuria vėl galite įdėti diską su įdiegta „Linux“.

    3.    Omaras BM sakė

      Labai ačiū jums, sakau, kad tai, ką padariau, buvo pereiti nuo „Ubuntu 16.04“ prie „Lubuntu 16.04“ toje pačioje operacinėje sistemoje.