כיצד לטפל בטיעוני שורת הפקודה ב-Bash?

Kyzd Ltpl Bty Wny Swrt Hpqwdh B Bash



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

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







כיצד לטפל בטיעוני שורת הפקודה ב-Bash?

ישנן דרכים שונות לטפל ב- args של שורת הפקודה ב-Bash אז בואו נסתכל עליהן כדי לקבל מידע קצר:



פונקציית getopt



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





  • טיעונים קצרים: אלו הם הטיעונים של תו בודד ואחריהם מקף. לדוגמה, -a, -l, -h וכו', הן כמה דוגמאות של טיעונים בודדים.

  • טיעונים ארוכים: אלו הם הטיעונים מרובי התווים ואחריהם מקף כפול. ישנן דוגמאות שונות של טיעונים ארוכים, כגון –הכל, –רשימה, –עזרה וכו'.

ניקח דוגמה שבה נטפל בארגומנטים של שורת הפקודה באמצעות כלי השירות getopt. יצרנו סקריפט bash בשם 'getopt.sh' המכיל את המידע הבא:



!/ פַּח / לַחֲבוֹט

בזמן getopts 'א ב ג ד:' פרטים; לַעֲשׂוֹת

מקרה ' $פרטים ' ב

א )

הֵד 'שם האזרח הוא $OPTARG ' ;;

ב )

הֵד 'תעודת אזרח היא $OPTARG ' ;;

ג )

הֵד 'מקום הלידה הוא $OPTARG ' ;;

ד )

הֵד 'הכיבוש הוא $OPTARG ' ;;

* )

יְצִיאָה 1 ;;

esac

בוצע

מִשׁמֶרֶת ' $(($OPTING -1) )'



אם [ ! -עם $1 ] ; לאחר מכן

הֵד 'מצב משפחתי $1'

אַחֵר

הֵד 'אין כניסות'

יְצִיאָה 1

לִהיוֹת



אם [ ! -עם $2 ] ; לאחר מכן

הֵד 'בני משפחה $2'

לִהיוֹת

כעת נבצע את הסקריפט עם הארגומנטים הנדרשים בקלט:

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

שימוש בדגלים

דגלים אינם אלא תווים בודדים שלפניהם מקפים (-). כאשר אנו מעבירים את הארגומנטים באמצעות הפונקציה getopt, אנו משתמשים בדגלים. -a, -b, -c הן כמה דוגמאות של דגלים. לדוגמה, תסריט דורש שם, תעודת זהות, מקום, גיל ועיסוק של אזרח. לפיכך, השתמשנו בדגלים j, k, l, m, n, כדי להגדיר את שם האזרח, תעודת זהות, מקום, גיל ועיסוק בו זמנית:

#!/bin/bash

בזמן getopts j:k:l:m:n: flag_info

לַעֲשׂוֹת

מקרה ' ${flag_info} ' ב
< ol >
< זֶה > י ) שם אזרח = ${OPTARG} ;; זֶה >
< זֶה > ק ) אזרחית = ${OPTARG} ;; זֶה >
< זֶה > ל ) מקום = ${OPTARG} ;; זֶה >
< זֶה > M ) גיל = ${OPTARG} ;; זֶה >
< זֶה > נ ) כיבוש = ${OPTARG} ;; זֶה >
ol >
esac

בוצע

הֵד 'הנה הפרטים שהוזנו:'

הֵד 'שם האזרח: $citizenname ' ;

הֵד 'זיהוי אזרח: $אזרח ' ;

הֵד 'מקום: מקום $ ' ;

הֵד 'גיל: גיל $ ' ;

הֵד 'כיבוש: $occupation ' ;

הסקריפט ייתן את התוצאה הבאה בטרמינל:

. /< תַסרִיט > דני 476 טורונטו -M 25 מְחַבֵּר

באמצעות [מוגן באימייל] עם לולאות

ה ' [מוגן באימייל] ' המשתנה אינו אלא המערך של כל ארגומנטי הקלט. אנו יכולים להעביר כל מספר של כניסות באמצעות ' [מוגן באימייל] 'משתנה. אתה יכול להשתמש במשתנה זה בתור לולאה כדי לחזור על הארגומנטים. ה ' [מוגן באימייל] משתנה מועיל אז; אתה לא יודע את גודל הקלט ולא יכול לקחת את הארגומנטים המיקוםיים. לפיכך, אתה יכול להשתמש ב' [מוגן באימייל] ”  במקום להגדיר את הפונקציה getopt שוב ושוב. הנה דוגמה לשימוש בלולאות ו [מוגן באימייל] ביחד בתסריט:

#!/bin/bash

על אחד = ( '$ @ )



אם [ $# -gt 1 ]

לאחר מכן



לְהוֹסִיף =$ ( ( ${num[0]} + ${num[1]} ) )

הֵד 'הוספה של כל המספרים היא: $add '



חִסוּר =$ ( ( ${num[0]} - ${num[1]} - ${num[2]} ) )

הֵד 'חיסור המספרים הוא: $ חיסור '



לְהַכפִּיל =$ ( ( ${num[0]} * ${num[1]} * ${num[2]} ) )

הֵד 'כפל המספרים הוא: $ להכפיל '



חטיבה 1 =$ ( ( ${num[0]} / ${num[1]} ) )

הֵד 'חטיבה של ${num[0]} ו ${num[1]} הוא: $division1 '



חלוקה 2 =$ ( ( ${num[1]} / ${num[2]} ) )

הֵד 'מחלקת ה ${num[1]} ו ${num[2]} הוא: $division2 '



חלוקה 3 =$ ( ( ${num[0]} / ${num[2]} ) )

הֵד 'מחלקת ה ${num[0]} ו ${num[2]} הוא: $division2 '



לִהיוֹת

הסקריפט שלעיל מבצע חישובים אריתמטיים שונים המבוססים על הארגומנטים של שורת הפקודה. לדוגמה, הכנסנו 50, 35 ו-15 כקלט:

שימוש בפרמטרים מיקוםיים

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

#!/bin/bash

הֵד 'הנה הפרטים שהוזנו'

הֵד 'שם $1'

הֵד 'עיר $2'

עליך להוסיף את השם והעיר בזמן ביצוע הסקריפט בטרמינל:

מסיימים

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