כיצד לטפל בוויכוחים של שורת הפקודה בסקריפט Bash

How Handle Command Line Arguments Bash Script



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

שימוש במשתני ארגומנט:

משתנה ארגומנט מתחיל מ- $ 0. שם קובץ הסקריפט הראשי מאוחסן ב- $ 0 המקבל ערכי ארגומנט מארגומנטים של שורת הפקודה. אם שני ארגומנטים מועברים בשורת הפקודה אז ערכי הארגומנט יתקבלו במשתנים $ 1 ו- $ 2 ברצף.







דוגמא -1: שליחת שלושה ערכים מספריים כארגומנטים

צור קובץ bash והוסף את הקוד הבא. התסריט יקבל שלושה ערכי ארגומנט ויאוחסן ב $ 1, $ 2 ו -3 $. הוא יספור את המספר הכולל של ארגומנטים, ידפיס ערכי ארגומנט עם לולאה וללא לולאה. לבסוף, הדפס את סכום כל ערכי הארגומנט.



#!/bin/bash

# ספירת המספר הכולל של טיעונים
זרק 'מספר הטיעונים הכולל: $#'

# קריאת ערכי טיעון בנפרד
זרק 'ערך הארגומנט הראשון: $ 1'
זרק 'ערך ארגומנט שני: 2 $'
זרק 'ערך ארגומנט שלישי: 3 $'

# קריאת ערכי ארגומנט באמצעות לולאה
לargvalב '[מוגן בדוא'ל]'
לַעֲשׂוֹת
זרק '$ argval'
בוצע

# הוספת ערכי ארגומנט
סְכוּם= $(($ 1+2 $+3 $))

# הדפס את התוצאה
זרק ' nתוצאה של סכום =סכום של $'

הפעל את קובץ bash עם שלושה ערכי ארגומנט מספריים.



$לַחֲבוֹטcmdline1.shחמישים 35 חֲמֵשׁ עֶשׂרֵה





דוגמה -2: נטילת שם קובץ כארגומנט

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

#!/bin/bash
שם קובץ=$ 1
סך הכל='שירותים $ קובץ'
זרק 'מספר התווים הכולל הוא$ סך הכל'

הפעל את סקריפט bash עם שם הקובץ כערך ארגומנט יחיד והפעל פקודה נוספת כדי לבדוק את המספר הכולל של התווים של אותו קובץ. כאן, קובץ Employ.txt משמש כערך ארגומנט. מספר התווים הכולל של קובץ Employ.txt הוא 204.



$לַחֲבוֹטcmdline2.sh עובד.טקסט
$שירותים עובד. טקסט

שימוש בפונקציה getopts:

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

דוגמא -1: קריאת ארגומנטים על ידי פונקציית getopts

צור קובץ bash והוסף את הסקריפט הבא להבנת השימוש קמצנים פוּנקצִיָה. הפונקציה 'getopts' משמשת עם לולאת while לקריאת אפשרויות ארגומנט של שורת הפקודה וערכי ארגומנט. כאן, 4 אפשרויות משמשות 'אני', 'נ', 'מ' ו 'וגם' . משפט משפט משמש להתאמת האפשרות המסוימת ושמירת ערך הארגומנט במשתנה. לבסוף, הדפס את ערכי המשתנה.

#!/bin/bash
בזמן קמצנים ':בתוכי:'כּוֹעֵס;לַעֲשׂוֹת
מקרה $ arg ב
אני) תְעוּדַת זֶהוּת=$ OPTARG;;
נ) שֵׁם=$ OPTARG;;
M) תאריך יצור=$ OPTARG;;
וכן) תאריך תפוגה=$ OPTARG;;
esac
בוצע
זרק ' nמזהה $ $ שם תאריך ייצור $ תאריך תפוגה של $ n'

הפעל את הקובץ עם האפשרויות הבאות וערכי הארגומנט הבאים. כאן, p100 הוא הערך של האפשרות -i, 'עוגה חמה' הוא הערך של האפשרות -n, '01 -01-2018 'הוא הערך של האפשרות -m ו- '06 -01-2018' הוא הערך של - אפשרות e.

$לַחֲבוֹטcmdline3.sh-אניp001 'עוגה חמה' -M '01 -01-2018 ' '06 -01-2018 '

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