כיצד אוכל להעביר טיעון בסקריפט Bash?

How Do I Pass Argument Bash Script



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

העברת טיעונים באמצעות משתני ברירת מחדל:

צור קובץ חדש עם כל שם באמצעות פקודת המגע, למשל, file.sh.







$לגעתשם קובץ



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







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

$./ארגומנט שם קובץ 1 ארגומנט 2 ארגומנט

אז כדי להעניק את זכויות הביצוע לקובץ זה, השתמש בפקודה sudo chmod לשם כך.



$סודו chmod+x שם קובץ

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

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

כעת, באמצעות אותו קובץ file.sh ישן עם שינוי קטן במשתני ברירת המחדל שלו. עליך להוסיף את המשתנה $ 0 בסקריפט כפי שמוצג.

בעת הפעלת אותה פקודת script./ Shell, שם סקריפט המעטפת שלך, למשל. ./ קובץ שם יישמר במשתנה $ 0 כארגומנט.

העברת טיעונים כמערך למשתנה:

החל מאותו קובץ file.sh, עליך להוסיף כמה שורות נוספות בסקריפט הישן. הכריז על משתנה בשם מערך. הוסף משתנה ברירת מחדל [המוגן בדוא'ל] שיאחסן את הארגומנטים שהזין המשתמש כמערך. ארגומנטים אלה ינותחו למערך משתנה. השורה האחרונה תציג את כל הארגומנטים של המערך המשתנה הממוינים לפי מספר האינדקס.

בצע את סקריפט ה- ./ shell. תראה שהוא יציג את הארגומנטים או הערכים המאוחסנים כמערך ב- [מוגן דוא'ל] מנותח למערך משתנה אך לא את שם סקריפט המעטפת בהצהרת ההד השנייה. יהיה לך הפלט הבא.

$./ארגומנט שם קובץ 1 ארגומנט 2 ארגומנט

השתמש באותו קובץ עם אותו סקריפט. פשוט הסר את $ {המערך [3]} מהשורה האחרונה כפי שנראה בתמונה.

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

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

אז אם תריץ שוב את הפקודה ./ תקבל את אותן התוצאות.

בדוק את סך הוויכוחים שהועברו:

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

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

צור פלט של ארגומנטים שורה אחר שורה:

צור קובץ test.sh חדש בספריית הבית. הוסף את סקריפט bash כפי שמוצג.

כעת הפעל את אותה פקודה ישנה עם ארגומנטים שונים. ראשית, תראה את השגיאה: הרשאה נדחתה.

עליך לבצע את הפקודה chmod כדי להעניק לקובץ זה הרשאות sudo. לאחר מכן, הפעל שוב את הפקודה script/. Shell. ותקבל פלט ממוין של שורה אחר שורה של ארגומנטים.

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

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

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

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

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

צור קובץ חדש בשם Check.sh בספריית הבית שלך. הוסף את אותו סקריפט bash כפי שמוצג בתמונה למטה. בתסריט זה, יש לנו משתנה var לאחסון ערך הארגומנט שהעביר המשתמש. לאחר מכן יש לנו משפט if, שיבדוק אם ערך הארגומנט יתאים או לא. אם ערך הארגומנט תואם את הערך המסופק בסוגריים, אז משפט ההד הראשון יבוצע. אם הערך אינו תואם, משפט ההד השני יבוצע.

כאשר אנו מפעילים את הפקודה script script, היא תעלה שגיאה. על ידי שימוש בפקודה chmod, אנו יכולים לתקן שגיאה זו.

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

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

סיכום:

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