למד כיצד לחשב את אות ה- DNI באמצעות סקריפט Bash

לאחר סיפוק ה- דרישות סעיף להיות מסוגל להריץ סקריפטים bash, והבן כיצד להגדיר פונקציות, ללמוד איך להחזיר ערכים בפונקציות bash. בשביל זה אנו הולכים ליצור תוכנית "אבל עוצמתית" קטנה ב- Bash זה לחשב את האותיות של ה- DNI. יש לי חדשות טובות: גם באש יכול להיות מותקן ב- Windows 10. עם מה שניתן להוסיף את כל הכוח של לינוקס במערכות הפעלה, נגיד ... שונה.

קודם כל, אנחנו חייבים להבין איך משטחים, שכמו בכל שפה, יש אפשרות להחזיר חלקים ממחרוזת מציון השרשרת, מיקום ואורך הקטע. בואו נסתכל על דוגמה להתנהגות זו. אנו יוצרים את התסריט שלנו עם

$ 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

מבצע תת-מיתרים

כפי שניתן לראות לעיל הדגשתי את השורות 13 עד 15 מהתסריט וצעד ל הסביר את הקוד שלך. אקו עם פרמטר "-e" מאפשר להראות את דמות השורה הבאה, הגדרנו דמות זו ב- שורה 7 והוקצה למשתנה «ret».

שורה 13: אני מראה את המצע (סובסטרינג) של המשתנה CHAIN, המתואר בשורה 8, ממצב 12. מתחיל תמיד לספור ממצב 0.

קו 14: מ בעמדה 12 של המשתנה CHAIN, אני מציג קטע של 5. כפי שתאמת זה תואם את המצע "לינוקס".

שורה 15: אני מלחין א מחרוזת חדשה כלולה במרכאות אני מתחיל בתור «אני לומד ב«, להמשיך עם תשתית של המשתנה CHAIN ממצב 31, לוקח קטע של 7: זה מתאים ל «Ubunlog».

פונקציות Postback

מנגנון ההחזרה עם 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». בשורה תשע אנו קוראים לפונקציית הסכום עם שני פרמטרים שיומרו על ידי המנגנון המתואר ב- משתנים "a" ו- "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. זה, אנו מחלקים את המספר ב- 23 y במקום להסתכל על המנה, אנו צופים בשאר החלוקה. המילים האחרות, כמו מספרים המתחלקים ב- 23 ייתן אפס, המכתב ש תואם את זה הוא "T", מאז הוא מיקום 0, כפי שראינו בתסריט לעיל, כל המצעים מתחילים לספור מאפס. כלומר, עם המודול תמיד נקבל מספרים בין 0 (אות "T") ל -22 (אות "O"). בבש, כמו בשפות אחרות המודול מתקבל באמצעות המפעיל האחוזי «%».

ב שורה 5 אנו מגדירים את האותיות בהזמנתך. זה ברור, לא ניתן לשנות את הסדר לקבלת תוצאות אמינות. באם של השורה 9 אנחנו שואלים אם בעת קריאת התסריט היה מספר כפרמטר. אם אין פרמטר, אנו מבקשים זאת על המקלדת עם ההוראות בשורות 11 עד 13. אם התסריט נקרא עם מספר לחישוב הסדר בשורה 15, הקצה פרמטר זה למשתנה «ndni».

בשורה 23 אנו מתייחסים לפונקציה המודולו דרך הפרמטר של משתנה «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 (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   עומר במ.מ. דיג'ו

    שלום, מישהו יכול לעזור לי, אני צריך להתקין את Lubuntu בשולחן העבודה הישן שלי אבל זה לא יאפשר לי להתקין דרך USB וכונן ה- DVD פגום, אני רק רוצה להתקין http://www.plop.at לאובונטו 16.04 LTS אבל אני לא יודע איך לעשות את זה. תודה

    1.    תמונה של פדרו רואיס הידאלגו דיג'ו

      עומר,

      כפי שציינת, המצב לא מבטיח במיוחד: אסור להשתמש ב- USB וכונן ה- DVD נפגע. אבל אתה גם מגיב ש"המחשב ישן ", כלומר יש לך מחשב חדש. נסה לשים את ההתקנה בכונן הקשיח מהמחשב העובד שלך ונסה להתקין אותה מהכונן הזה.

      לגבי

    2.    סזאר דלבה דיג'ו

      יש לך מחשב ותיבה נשלפת? הרכיב את הכונן הקשיח של המחשב הישן בתיבת ה- USB הנשלפת והפעל את דיסק ההתקנה.
      לינוקס ואוניקס לא לוקחים בחשבון את החומרה ברמת האתחול, שבעזרתה תוכלו להכניס את הדיסק שוב עם לינוקס מותקן.

    3.    עומר במ.מ. דיג'ו

      תודה רבה אני אומר לך שמה שעשיתי היה לעבור מאובונטו 16.04 לובונטו 16.04 באותה מערכת הפעלה hehe ולכן המחשב הישן שלי עבד טוב hehe ברכות מקולומביה.