تعرف على كيفية حساب حرف DNI باستخدام برنامج نصي باش

بعد إرضاء متطلبات إلى تكون قادرة على تشغيل البرامج النصية bash، و إفهم كيفية تحديد الوظائف، تعلم كيف إرجاع القيم في وظائف bash. للقيام بذلك ، سنقوم بإنشاء برنامج صغير ولكنه قوي في Bash احسب حروف DNI. لدي أخبار سارة: باش يستطيع أيضًا يتم تثبيتها على نظام التشغيل Windows 10. مع ما يمكن أن يضاف كل قوة Linux في أنظمة التشغيل ، دعنا نقول ... مختلف.

بادئ ذي بدء ، علينا أن نفعل ذلك فهم كيف سلاسل فرعية، والتي ، كما هو الحال في أي لغة ، لديها إمكانية إرجاع أجزاء من سلسلة من إشارة السلسلة وموضع وطول المقطع. لنلق نظرة على مثال على هذا السلوك. نقوم بإنشاء السيناريو الخاص بنا مع

$ touch prueba_substring
$ 

ثم نضيف الكود التالي مع المحرر المفضل لديك. في وضع المحطة المحرر المفضل لدي هو mcedit. لكنني لاحظت مؤخرًا أن النانو تكتسب قوة.

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

عملية Substring

كما ترون أعلاه لقد أبرزت الخطوط من 13 إلى 15 من النص والخطوة إلى شرح التعليمات البرمجية الخاصة بك. صدى مع المعلمة "-e" دعنا نظهر ال حرف السطر التالي، لقد حددنا هذه الشخصية في السطر 7 والمخصص للمتغير «ret»..

السطر 13: أعرض السلسلة الفرعية (سلسلة فرعية) من المتغير CHAIN ​​، الموصوف في السطر 8 ، من المركز 12. يبدأ العد دائمًا من الموضع 0.

السطر 14: من الموضع 12 من متغير CHAIN ​​، أعرض مقطعًا من 5. كما ستتحقق من أن هذا يتوافق مع سلسلة فرعية "Linux".

السطر 15: أقوم بتأليف ملف سلسلة جديدة بين علامتي الاقتباس أبدأ كـ "أتعلم في" ، للاستمرار مع سلسلة فرعية من المتغير CHAIN من الموضع 31 ، مع أخذ مقطع من 7: هذا يتوافق مع «Ubunlog».

وظائف إعادة النشر

يتم إنتاج آلية الإرجاع مع Bash بواسطة الأمر "return" ، على الرغم من أنه عندما يتعين علينا مطابقتها مع متغير Bash ، فإنها تنفذ آلية "غريبة" ، والتي يجب أن تعتاد عليها. لنلق نظرة على المثال التالي:

#!/usr/bin/env bash

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

suma 12 23
retorno=$?
echo $retorno

يجب دائمًا تحديد الوظائف قبل استخدامها في Bash، لذلك ، بعد كوخ نعلن مجموع الوظيفة ، في السطر 4 نحدد عن طريق "محلي" إسناد أول المعلمات ($ 1) إلى المتغير "a". إجراء مماثل في السطر 5 ، حيث نقوم بتعيين المعامل الثاني a ($ 2) للمتغير «b».. في السطر التاسع ، نسمي دالة الجمع مع معلمتين سيتم تحويلهما بواسطة الآلية الموضحة في المتغيرين "أ" و "ب" ومع "إرجاع" نعيدهما مضافين، كما يمكن رؤيته بسهولة في تعليمات الوظيفة.

نقوم بتعيين المتغير "return" في ملف السطر 10 نتيجة تنفيذ مجموع الوظيفة.

بعد دراسة وفهم الطريقة التي تتم ممارسة عوائد القيم والتخصيص للمتغيرات دعنا نذهب لرؤية برنامجنا الخاص بـ حساب رسائل DNI مع Bash.

برنامج نصي لحساب أحرف DNI باستخدام 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 خطاب DNI الخاص بنا يتوافق مع رقم الوحدة 23. Esto es ، نقسم الرقم على 23 y بدلاً من النظر إلى حاصل القسمة ، نلاحظ بقية الانقسام. الكلمات الأخرى ، مثل الأعداد القابلة للقسمة على 23 ستعطي صفرًا، الرسالة التي يتوافق معها هو «T»، منذ هذا هو الموضع 0كما رأينا في النص أعلاه ، تبدأ جميع السلاسل الفرعية بالعد من الصفر. أي أننا سنحصل دائمًا على الأرقام مع الوحدة بين 0 (الحرف "T") و 22 (الحرف "O"). في باش ، كما في اللغات الأخرى يتم الحصول على الوحدة عن طريق عامل النسبة المئوية «٪»..

في السطر 5 نحدد الحروف في طلبك. من الواضح، لا يمكن تغيير الترتيب لنتائج موثوقة. إذا كان من الخط 9 نحن نسأل إذا كان هناك رقم كمعامل عند استدعاء البرنامج النصي. في حالة عدم وجود معلمة ، نطلبها عن طريق لوحة المفاتيح مع التعليمات من السطور 11 إلى 13. إذا تم استدعاء النص برقم لحساب الترتيب في السطر 15 ، فإنه يخصص هذا المعامل للمتغير «ndni».

في السطر 23 نشير إلى وظيفة modulo من خلال المعلمة متغير «ndni» ، إما أنه تم جمعه كمعامل في bash ، أو عن طريق لوحة المفاتيح كمدخل. في السطر 24 يتم تعيين عودة الوظيفة إلى المتغير «mod». على خط 25 منعرض الرقم والشرطة والحرف المقابل للموضع وفقًا لحساب المعامل والسلسلة الفرعية.

اختبار نص DNI الخاص بنا

$ ./dni 12345678
12345678-Z

اوه حسنا،

$ ./dni

 Cálculo DNI, Introduce número

يجب أن تتضمن جميع البرامج النصية الخاصة بنا معامل "-a" للمؤلف و "-h" آخر للمساعدة والصياغة. كما رأينا في المقالات السابقة أو أترك الأمر لك حتى لا تجعل الكود أكثر تعقيدًا.
آمل وآمل أن يكون هذا المقال من اهتمامك.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   عمر بي ام قال

    مرحبًا ، هل يمكن لأي شخص مساعدتي ، أحتاج إلى تثبيت lubuntu على سطح المكتب القديم الخاص بي ، لكنه لن يسمح لي بالتثبيت عبر USB وتلف محرك أقراص DVD ، أريد فقط التثبيت http://www.plop.at إلى Ubuntu 16.04 LTS لكني لا أعرف كيف أفعل ذلك. شكرا

    1.    صورة Pedro Ruiz Hidalgo قال

      عمر،

      كما ذكرت ، فإن الوضع ليس واعدًا جدًا: فلا يُسمح باستخدام USB ومحرك أقراص DVD تالف. لكنك تعلق أيضًا بأن "الكمبيوتر قديم" ، وهذا يعني أن لديك واحدًا جديدًا. حاول تثبيت التثبيت على قرص صلب من جهاز كمبيوتر يعمل ومحاولة تثبيته من محرك الأقراص هذا.

      تحياتي

    2.    سيزار دلبا قال

      هل لديك جهاز كمبيوتر وصندوق قابل للإزالة؟ قم بتركيب القرص الصلب لجهاز الكمبيوتر القديم في صندوق USB القابل للإزالة وابدأ قرص التثبيت.
      لا يأخذ Linux و Unix في الاعتبار الأجهزة الموجودة على مستوى التمهيد ، والتي يمكنك من خلالها وضع القرص مرة أخرى مع تثبيت Linux.

    3.    عمر بي ام قال

      شكراً جزيلاً لك وأخبرك أن ما فعلته هو الانتقال من Ubuntu 16.04 إلى Lubuntu 16.04 ضمن نفس نظام التشغيل ، وهكذا كان جهاز الكمبيوتر القديم يعمل بشكل جيد مع تحياتي من كولومبيا.