બાસ સ્ક્રિપ્ટનો ઉપયોગ કરીને DNI અક્ષરની ગણતરી કરવાનું શીખો

સંતોષ પછી જરૂરિયાતો થી બેશ સ્ક્રિપ્ટો ચલાવવા માટે સક્ષમ, અને સમજો કેવી રીતે વિધેયો વ્યાખ્યાયિત કરવા માટે, જાણો કેવી રીતે બેશ ફંક્શન્સમાં વળતર મૂલ્યો. આ માટે આપણે બાશમાં એક નાનો - પરંતુ શક્તિશાળી - એક પ્રોગ્રામ બનાવવાનો છે DNI ના અક્ષરોની ગણતરી કરો. મારી પાસે સારા સમાચાર છે: બાશ પણ કરી શકે છે વિન્ડોઝ 10 પર ઇન્સ્ટોલ કરેલું છે. Operatingપરેટિંગ સિસ્ટમ્સમાં લિનક્સની બધી શક્તિ શું ઉમેરી શકાય છે તે સાથે, ચાલો કહીએ ... અલગ.

સૌ પ્રથમ, આપણે કરવું પડશે કેવી રીતે સમજવું સબસ્ટ્રીંગ્સ, જે, કોઈપણ ભાષાની જેમ, શક્યતા છે શબ્દમાળા ભાગો પાછા સાંકળ, સ્થાન અને સેગમેન્ટની લંબાઈના સંકેતમાંથી. ચાલો આ વર્તનનું ઉદાહરણ જોઈએ. અમે સાથે અમારી સ્ક્રિપ્ટ બનાવીએ છીએ

$ 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 લાઈનો પ્રકાશિત કરી છે સ્ક્રિપ્ટ અને પગલું માંથી તમારો કોડ સમજાવો. ઇકો સાથે પરિમાણ "-e" ચાલો બતાવીએ આગલી લાઇન અક્ષર, આપણે આ પાત્રની વ્યાખ્યા લાઇન 7 અને ચલને સોંપેલ «ret.

પંક્તિ 13: હું સબસ્ટ્રિંગ બતાવીશ (સબસ્ટ્રિંગ) ચૈન ચલનું, લાઇન 8 માં વર્ણવેલ, સ્થિતિ 12 થી. હંમેશાં સ્થિતિ 0 થી ગણતરી કરવાનું પ્રારંભ કરો.

પંક્તિ 14: થી CHAIN ​​ચલની સ્થિતિ 12, હું 5 નો સેગમેન્ટ બતાવીશ. તમે ચકાસશો તેમ આ અનુરૂપ છે "લિનક્સ" સબસ્ટ્રિંગ.

પંક્તિ 15: હું કંપોઝ એ અવતરણમાં બંધ નવી શબ્દમાળા CHAIN ​​ચલના સબસ્ટ્રિંગ સાથે ચાલુ રાખવા માટે, હું «હું શીખું છું as તરીકે પ્રારંભ કરું છું પોઝિશન 31 થી, 7 નો સેગમેન્ટ લઇને: આ અનુરૂપ છે «Ubunlog».

પોસ્ટબેક કાર્યો

બાશ સાથે રીટર્ન મિકેનિઝમ "રીટર્ન" કમાન્ડ દ્વારા બનાવવામાં આવે છે, જો કે, જ્યારે આપણે તેને બાસ વેરિયેબલ સાથે મેચ કરવાનું છે, ત્યારે તે "વિચિત્ર" મિકેનિઝમ લાગુ કરે છે, જે તમને ટેવાય છે. ચાલો નીચે આપેલ ઉદાહરણ જોઈએ:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

બશમાં ઉપયોગ કરતા પહેલા કાર્યો હંમેશાં વ્યાખ્યાયિત કરવા આવશ્યક છેતેથી, પછી શેબેંગ અમે ફંકશન line પર, કાર્યની રકમ જાહેર કરીશું અમે પરિમાણોના પ્રથમ સોંપણી «સ્થાનિક of દ્વારા વ્યાખ્યાયિત કરીએ છીએ ($ 1) ચલ "એ" ને. લાઇન 5 પર સમાન પ્રક્રિયા, જ્યાં અમે બીજા પરિમાણ a ($ 2) ને વેરીએબલ assign b to ને સોંપીએ છીએ. લાઇન નવમાં આપણે બે પરિમાણો સાથે સરવાળા ફંક્શનને ક callલ કરીએ છીએ જે માં વર્ણવેલ મિકેનિઝમ દ્વારા રૂપાંતરિત કરવામાં આવશે વેરીએબલ્સ "એ" અને "બી" અને "રીટર્ન" સાથે અમે તેમને પાછા ઉમેર્યા છે, કાર્ય માટેના સૂચનોમાં સરળતાથી જોઇ શકાય છે.

આપણે "" માં વેરીએબલ "રીટર્ન" સોંપીએ છીએ વાક્ય 10 ફંક્શન રકમના અમલનું પરિણામ.

જે રીતે અભ્યાસ અને સમજ્યા પછી વેલ્યુએલ્સના વળતર અને અસાઇનમેન્ટનો ઉપયોગ કરવામાં આવે છે ચાલો આપણે અમારો પ્રોગ્રામ જોવા જઈએ બાશ સાથે DNI અક્ષરોની ગણતરી.

બાશ સાથે DNI અક્ષરોની ગણતરી માટે સ્ક્રિપ્ટ

#!/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 અમારા DNI ના પત્ર તે અનુલક્ષે છે નંબર મોડ્યુલ 23. આ છે, આપણે સંખ્યા 23 થી વિભાજીત કરીશું y ભાવિ તરફ જોવાની જગ્યાએ, બાકીના ભાગનું અવલોકન કરીએ છીએ. જેવા અન્ય શબ્દો 23 દ્વારા ભાગાકાર નંબરો શૂન્ય આપશે, પત્ર કે તે અનુરૂપ છે «ટી is, ત્યારથી સ્થિતિ 0 છે, જેમ કે આપણે ઉપરની સ્ક્રીપ્ટમાં જોયું છે, બધી સબસ્ટ્રિંગ્સ શૂન્યથી ગણતરી શરૂ કરે છે. તે છે, મોડ્યુલ સાથે આપણે હંમેશાં સંખ્યા પ્રાપ્ત કરીશું 0 (અક્ષર "ટી") અને 22 વચ્ચે (અક્ષર "ઓ"). બાશમાં, અન્ય ભાષાઓની જેમ મોડ્યુલ ટકા ઓપરેટર «% of દ્વારા પ્રાપ્ત થાય છે.

આ માં વાક્ય 5 અમે અક્ષરો વ્યાખ્યાયિત કરીએ છીએ તમારા ક્રમમાં તે સ્પષ્ટ છે, ઓર્ડર બદલી શકાતો નથી વિશ્વસનીય પરિણામો માટે. જો લાઇનની 9 અમે પૂછીએ છીએ જો સ્ક્રિપ્ટને ક callingલ કરતી વખતે પેરામીટર તરીકેનો નંબર હતો. જો ત્યાં કોઈ પરિમાણ નથી, તો અમે તેને 11 થી 13 લાઇનની સૂચનાઓ સાથે કીબોર્ડ દ્વારા વિનંતી કરીએ છીએ. જો સ્ક્રિપ્ટને પંક્તિ 15 પરના ક્રમમાં ગણતરી કરવા માટે નંબર સાથે બોલાવવામાં આવી હતી, તો તે આ પરિમાણને able ndni »ને સોંપે છે.

લીટી 23 માં આપણે મોડ્યુલો ફંક્શન નો સંદર્ભ લો ચલ «ndni», ક્યાં તો તે બેશમાં પરિમાણ તરીકે એકત્રિત કરવામાં આવ્યું છે, અથવા કીબોર્ડ દ્વારા ઇનપુટ તરીકે. લાઈન 24 માં ફંક્શનનું વળતર ચલ «મોડ» ને સોંપેલ છે. 25 મી લાઇન પરઆપણે નંબર, આડંબર અને મોડ્યુલસ અને સબસ્ટ્રિંગની ગણતરી પ્રમાણે સ્થિતિને અનુરૂપ પત્ર બતાવીશું..

અમારી DNI સ્ક્રિપ્ટનું પરીક્ષણ કરી રહ્યું છે

$ ./dni 12345678
12345678-Z

ઓ, સારું,

$ ./dni

 Cálculo DNI, Introduce número

અમારી બધી સ્ક્રિપ્ટોમાં લેખક માટે પરિમાણ "-a" અને સહાય અને વાક્યરચના માટે બીજું "-h" શામેલ હોવું જોઈએ. જેમ કે આપણે પહેલાનાં લેખોમાં જોયું છે અથવા કોડ વધુ બોજારૂપ ન બને તે માટે હું તમને તે છોડું છું.
હું આશા અને આશા રાખું છું કે આ લેખ તમારી રુચિ છે.


તમારી ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. આવશ્યક ક્ષેત્રો સાથે ચિહ્નિત થયેલ છે *

*

*

  1. ડેટા માટે જવાબદાર: મિગ્યુએલ gelંજેલ ગેટóન
  2. ડેટાનો હેતુ: નિયંત્રણ સ્પામ, ટિપ્પણી સંચાલન.
  3. કાયદો: તમારી સંમતિ
  4. ડેટાની વાતચીત: કાયદાકીય જવાબદારી સિવાય ડેટા તૃતીય પક્ષને આપવામાં આવશે નહીં.
  5. ડેટા સ્ટોરેજ: cસેન્ટસ નેટવર્ક્સ (ઇયુ) દ્વારા હોસ્ટ કરેલો ડેટાબેઝ
  6. અધિકાર: કોઈપણ સમયે તમે તમારી માહિતીને મર્યાદિત, પુન recoverપ્રાપ્ત અને કા deleteી શકો છો.

  1.   ઓમર બી.એમ. જણાવ્યું હતું કે

    હેલો, કોઈ મારી મદદ કરી શકે છે, મારે મારા જૂના ડેસ્કટ computerપ કમ્પ્યુટર પર લુબન્ટુ ઇન્સ્ટોલ કરવાની જરૂર છે પરંતુ તે મને યુએસબી દ્વારા ઇન્સ્ટોલ કરવા દેશે નહીં અને ડીવીડી ડ્રાઇવને નુકસાન થયું છે, હું ફક્ત ઇન્સ્ટોલ કરવા માંગુ છું http://www.plop.at ઉબુન્ટુને 16.04 એલટીએસ પર, પરંતુ મને તે કેવી રીતે કરવું તે ખબર નથી. આભાર

    1.    પેડ્રો રુઇઝ હિડાલ્ગો પ્લેસહોલ્ડર છબી જણાવ્યું હતું કે

      ઓમર,

      તમે કહ્યું તેમ, પરિસ્થિતિ ખૂબ આશાસ્પદ નથી: યુએસબીને મંજૂરી નથી અને ડીવીડી ડ્રાઇવને નુકસાન થયું છે. પરંતુ તમે પણ ટિપ્પણી કરો છો કે "કમ્પ્યુટર જૂનું છે", તેનો અર્થ એ કે તમારી પાસે એક નવું છે. તમારા કાર્યરત કમ્પ્યુટરથી ઇન્સ્ટોલને હાર્ડ ડ્રાઇવ પર મૂકવાનો પ્રયાસ કરો અને તેને તે ડ્રાઇવથી ઇન્સ્ટોલ કરવાનો પ્રયાસ કરો.

      સાદર

    2.    સીઝર ડેલબા જણાવ્યું હતું કે

      શું તમારી પાસે કમ્પ્યુટર અને દૂર કરવા યોગ્ય બ ?ક્સ છે? દૂર કરી શકાય તેવા યુએસબી બ inક્સમાં જૂના કમ્પ્યુટરની હાર્ડ ડ્રાઇવને માઉન્ટ કરો અને ઇન્સ્ટોલેશન ડિસ્ક પ્રારંભ કરો.
      લિનક્સ અને યુનિક્સ બૂટ લેવલ પરના હાર્ડવેરને ધ્યાનમાં લેતા નથી, જેની સાથે તમે ફરીથી લિનક્સ ઇન્સ્ટોલ કરીને ડિસ્ક મૂકી શકો છો.

    3.    ઓમર બી.એમ. જણાવ્યું હતું કે

      ખૂબ ખૂબ આભાર હું તમને કહું છું કે મેં જે કર્યું તે જ operatingપરેટિંગ સિસ્ટમની ઉબુન્ટુ 16.04 થી લુબન્ટુ 16.04 પર જવું હતું અને આ રીતે જ મારો જૂનો કમ્પ્યુટર સારી રીતે કામ કરી રહ્યો હતો તે કોલમ્બિયાથી શુભેચ્છાઓ આપતો હતો.