הדרכה לתסריט Bash למתחילים

Bash Scripting Tutorial



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

תוכן:

  1. הערות
  2. הד פיקוד
  3. משתנים
  4. הצהרה מותנית
  5. לולאות
  6. פונקציות
  7. קריאת תוכניות בתסריט
  8. יצירת תפריטים
  9. עיבוד שורת הפקודה
  10. חֶשְׁבּוֹן
  11. מניפולציה של מחרוזות
  12. החזרת קודי החזרה מסקריפט ותפיסת סקריפט אחר
  13. קריאה וכתיבה לקבצים
  14. צינורות

הערות

הוספת הערות עם הקוד היא חלק חיוני בכל שפת תכנות. ההערות אינן מנותחות עם התסריט בזמן הביצוע. הקורא יכול להבין כל קוד כמו שצריך אם הוא הגיב היטב לקוד. אתה יכול להוסיף הערה במספר דרכים בסקריפט bash. חלק זה מציג כיצד תוכל להוסיף הערות בשורה אחת ובכמה שורות בסקריפט bash. צור קובץ bash עם הסקריפט הבא כדי לדעת את השימוש ב- bash comment. כאן, סמל '#' משמש להוספת הערה בשורה אחת וציטוט יחיד (') עם': 'משמש להוספת הערות מרובות שורות.







bash_comment.sh



#!/bin/bash
#קח מספר כקלט
זרק 'הזן מספר'
לקרואל
:'
בדוק את מספר הקלט הוא
פחות מ 10 או יותר מ 10 או שווה ל 10
'

אם [[ $ א -lt 10 ]]
לאחר מכן
זרק 'המספר קטן מ -10'
אליף [[ $ א -גט 10 ]]
לאחר מכן
זרק 'המספר גדול מ -10'
אַחֵר
זרק 'המספר שווה ל -10'
לִהיוֹת

תְפוּקָה:



הפעל את התסריט.





$לַחֲבוֹטbash_comment.sh

כאן, התסריט מבוצע שלוש פעמים עם ערך הקלט 3, 10 ו- 90. הפלט הבא יופיע.



אם אתה רוצה לדעת יותר על הערות bash אז אתה יכול לבדוק הדרכה זו .

עבור למעלה

פקודת הד

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

echo_test.sh

#!/bin/bash
#הדפס את הטקסט הראשון
זרק 'הדפס טקסט בשורה חדשה'
#הדפס את הטקסט השני
זרק 'הדפס טקסט ללא שורה חדשה'

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטecho_test.sh

הפלט הבא יופיע לאחר ביצוע הפקודה לעיל.

ישנם שימושים רבים אחרים של פקודת 'הד' ב- bash. אתה יכול לבדוק הדרכה זו כדי ללמוד עוד על הפקודה 'הד'.

עבור למעלה

משתנים

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

הפקודות הבאות יכריזו על משתנה מחרוזת בשם mystr עם ערך מסוים והדפס הבא את ערך המשתנה במסוף.

$mystr='אני אוהב תכנות קשוח'
$זרק $ mystr

תְפוּקָה:

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

var.sh

#!/bin/bash
זרק 'הזן מספר'
לקרואל
ב=100
אם [[ $ א -משווה $ b ]]
לאחר מכן
זרק 'המספרים שווים'
אַחֵר
זרק 'המספרים אינם שווים'
לִהיוֹת

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטvar.sh

הפקודה לעיל מבוצעת פעמיים עם הערך 56 ו- 100. הפלט הבא יופיע.

אם אתה רוצה לדעת יותר על משתני bash, תוכל לבדוק הדרכה זו .

עבור למעלה

הצהרה מותנית

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

cond.sh

#!/bin/bash

זרק 'הכנס את הקוד שלך'
לקרואקוד
זרק 'הכנס את הגיל שלך'
לקרואגיל

אם [[ גיל $ -לָתֵת 18 && קוד $ -משווה '1100' ]]
לאחר מכן
זרק 'אתה זכאי לראות את הסרט'
אַחֵר
זרק 'אינך כשיר לראות את הסרט'
לִהיוֹת

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטcond.sh

הפלט הבא יופיע לאחר לקיחת ערכי קלט שונים. 1100 ניתן כקוד ו -5 ניתן כגיל לביצוע הראשון ואם התנאי מחזיר שקר עבור ערכים אלה. 1100 ניתן כקוד ו -45 ניתן כגיל לביצוע השני שחוזר נכון למצב if.

אם אתה רוצה לדעת יותר על הצהרת מותנה bash אז אתה יכול לבדוק הדרכה זו.

עבור למעלה

לולאות

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

שימוש עבור לולאה

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

for.sh

#קרא שם יום חול בכל איטרציה של הלולאה
ליְוֹםבשני שלישי רביעי חמישי חמישי שבת ראשון
לַעֲשׂוֹת

#בדוק שהשם של יום חול הוא שני או חמישי
אם [[ יום $=='יוֹם שֵׁנִי' || יום $=='יוֹם חֲמִישִׁי' ]]
לאחר מכן
זרק 'מפגש ביום $בשעה 9:30 בבוקר

#בדוק את השם של יום חול הוא שלישי או רביעי או שישי
אליף [[ יום $=='יוֹם שְׁלִישִׁי' || יום $=='יום רביעי' || יום $=='יוֹם שִׁישִׁי' ]]
לאחר מכן
זרק 'מתאמן עליום $בשעה 11:00 '
אַחֵר

#הדפס 'חג' לימים אחרים
זרק 'יום $הוא חג '
לִהיוֹת
בוצע

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטfor.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

אם אתה רוצה לדעת יותר שימוש ב- bash for loop אז אתה יכול לבדוק את ההדרכה הזו.

שימוש בזמן לולאה

צור קובץ bash עם הסקריפט הבא שבו ' בעוד ` לולאה משמשת לאיטרציה. סקריפט זה ידפיס את המספרים מ -1 עד 20 שהם חלקים וחלקים ב- 5. כאן, דלפק $ משתנה משמש לשליטה באיטרציה של הלולאה וערכו של משתנה זה עולה ב- 1 בכל איטרציה. מתי 'אם' מצב יחזור נכון ואז הוא ידפיס את הערך של דלפק $ .

#!/bin/bash

#הדפס את ההודעה
זרק 'הדפס את המספרים שהם חלקים וחלקים ב -5'

#התחל את הדלפק
דֶלְפֵּק=1

#בצע את הלולאה עד שערך הנגד $ הוא פחות או שווה ל -20
בזמן [ דלפק $ עשרים ]
לַעֲשׂוֹת

#בדוק כי מונה $ מתחלק ב -2 ו -5
אם [[ דלפק $%2-משווה 0 && דלפק $%5-משווה 0 ]]
לאחר מכן
#הדפס מונה $ ללא שורה חדשה
זרק 'דלפק $'
לִהיוֹת

#הגדלת מונה $ ב -1
((מונה ++))
בוצע
זרק 'בוצע'

תְפוּקָה:

$לַחֲבוֹטwhile.sh

ישנם מספרים בלבד בטווח של 1-20, שהם חלקים וחלקים ב- 5. הפלט הבא יופיע לאחר הפעלת התסריט.

אם אתה רוצה לדעת יותר שימוש ב- bash ` בעוד ' לולאה אז אתה יכול לבדוק הדרכה זו .

שימוש עד לולאה

צור קובץ bash עם הסקריפט הבא שבו ' עד ' לולאה משמשת לאיטרציה. סקריפט זה ידפיס את כל המספרים המוזרים בין 0 ל -20. $ n משתנה משמש בתסריט זה כדי לחזור על הלולאה.

עד.ש

#!/bin/bash

#התחל את המשתנה, n
נ=עשרים

#חזור על הלולאה עד שהערך של $ n גדול מ- 0
עד [ $ n -lt 0 ]
לַעֲשׂוֹת

#בדוק שהערך של n הוא מוזר
אם [[ $ n%2-גט 0 ]]
לאחר מכן
זרק $ n
לִהיוֹת

#העלה את הערך של n ב- 1
((נ=$ n-1))
בוצע

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטעד.ש

התסריט ידפיס את כל המספרים הזוגיים מ -20 עד 1. הפלט הבא יופיע לאחר הפעלת התסריט.

עבור למעלה

פונקציות

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

צור קובץ bash עם הסקריפט הבא כדי לדעת כיצד ניתן להכריז על הפונקציות ולקרוא להן script bash. שלוש פונקציות מוכרזות בתסריט. הפונקציה הראשונה מוכרזת להדפיס הודעה פשוטה, תכנות Bash למתחילים . הפונקציה השנייה מוכרזת להקצות ערך מחרוזת במשתנה, $ return_str שידפיס, למד תכנות bash עם LinuxHint לאחר קריאת הפונקציה. הפונקציה השלישית מכריזה על קריאת ערך ארגומנט כרדיוס מעגל שיינתן בזמן קריאת הפונקציה. פה, מְקוֹמִי משמש לקריאת ערך הארגומנט. פונקציה זו תחשב את שטח המעגל על ​​בסיס ערך הרדיוס באמצעות הנוסחה, πr2 והדפס את ערך השטח המחושב.

func.sh

#!/bin/bash

#הצהיר על פונקציה פשוטה
פוּנקצִיָההודעה הדפסה()
{
זרק 'תכנות Bash למתחילים'
}

#הצהיר על פונקציה להחזרת ערך מחרוזת
פוּנקצִיָהret_strdata()
{
#התחל את המשתנה עם ערך מחרוזת
return_str='למד תכנות bash עם LinuxHint'
}

#הצהיר פונקציה לקריאת ערך הארגומנט
פוּנקצִיָהלחשב_שטח()

#קרא את ערך הארגומנט שעבר
מְקוֹמִי רַדִיוּס=$ 1
אֵזוֹר= $(זרק רדיוס של $*רדיוס של $*3.14

#התקשר לפונקציה להדפסת הודעה פשוטה
הודעה הדפסה

#התקשר לפונקציה שתקצה ערך מחרוזת במשתנה
ret_strdata

#הדפס את ערך המשתנה
זרק $ return_str

#קרא את ערך הרדיוס
זרק 'הזן את ערך הרדיוס'
לקרואעֲבוֹדָה

#התקשר לפונקציה עם ערך רדיוס
לחשב_שטח$ rad

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטfunc.sh

הפלט הבא יופיע לאחר הפעלת התסריט. שתי השורות הראשונות יודפסו על ידי קריאה לפונקציות, print_message () ו ret_strdata () . השורה האחרונה תודפס על ידי קריאה לפונקציה, לחשב_שטח () עם ערך רדיוס הקלט שנלקח.

אם אתה רוצה לדעת על החזרת מחרוזת מפונקציית bash, תוכל הטוטוריה הזו ה.

עבור למעלה

קריאת תוכניות בתסריט

אתה יכול להשתמש בסוגים רבים של פקודות כדי להתקשר לתוכניות אחרות בכל סקריפט bash, כגון מקור, bash, eval, מנהל וכו 'נניח שלושה קבצי bash, add.sh , subtract.sh, multiply.sh ו- division.sh נוצר לביצוע חיבור, חיסור, כפל וחילוק. פה, subtract.sh ו division.sh קרא ארגומנטים של שורת הפקודה. התסריט של כל ארבעת הקבצים הללו ניתן להלן.

add.sh

#!/bin/bash
ל=60
ב=40
((תוֹצָאָה=$ א+$ b))
זרק 'התוספת של$ א+$ b=תוצאה של $'

subract.sh

#!/bin/bash
ל=$ 1
ב=2 $
((תוֹצָאָה=$ א-$ b))
זרק 'החיסור של$ א-$ b=תוצאה של $'

להכפיל.ש

#!/bin/bash
((תוֹצָאָה=$ 1*2 $))
זרק 'הכפל של $ 1 ו -2 $ הואתוצאה של $'

divide.sh

#!/bin/bash
ל=$ 1
ב=2
((תוֹצָאָה=$ א/$ b))
זרק 'החלוקה של$ אעל ידי$ bהואתוצאה של $'

צור קובץ bash בשם, callpro.sh עם הסקריפט הבא כדי לקרוא לקבצי bash שהוזכרו באמצעות פקודות מקור, bash, eval ו- exec. עליך להגדיר הרשאת ביצוע לארבעת הקבצים שלעיל לפני הפעלת הסקריפט הבא. הפקודה 'מקור' משמשת להתקשרות add.sh קוֹבֶץ. הפקודה 'bash' משמשת לביצוע קובץ subtract.sh. הפקודה `eval` משמשת לביצוע קובץ multiply.sh. שני ערכי קלט נשלחים כארגומנטים של שורת הפקודה לפקודה `eval`. הפקודה האחרונה היא פקודת exec שעובדת עם נתיב מוחלט בלבד. לשם כך, שם הנתיב המלא של קובץ divide.sh ניתן בתסריט.

callpro.sh

#!/bin/bash
סקריפט 1='add.sh'
סקריפט 2='subtract.sh'
סקריפט 3='multiply.sh'
סקריפט 4='/home/fahmida/code/divide.sh'

מָקוֹר 'סקריפט $ 1'

לַחֲבוֹט $ script2 חמישים עשרים

זרק 'הזן את הערך של a'
לקרואל
זרק 'הזן את הערך של b'
לקרואב
eval לַחֲבוֹט $ script3 $ א $ b
מנהל סקריפט $ 4 30

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטcallpro.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

עבור למעלה

יצירת תפריטים

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

menu.sh

#!/bin/bash

#הודעת הדפסה למשתמש
זרק 'בחר את השפה האהובה עליך'

# הגדר את רשימת פריטי התפריט
בחרשפהבג# Java PHP יציאת Python Bash
לַעֲשׂוֹת
#הדפס את הערך שנבחר
אם [[ $ שפה=='יְצִיאָה' ]]
לאחר מכן
יְצִיאָה 0
אַחֵר
זרק 'השפה הנבחרת היא$ שפה'
לִהיוֹת
בוצע

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטmenu.sh

על פי הפלט הבא, המשתמש לחץ על 3 בפעם הראשונה שהדפיס PHP ולחץ 6 בפעם השנייה שהסתיימה מהתסריט.

אם אתה רוצה לדעת יותר על יצירת תפריט bash עם 'בחר', תוכל לבקר במדריך זה.

עבור למעלה

עיבוד שורת הפקודה

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

צור קובץ bash עם הסקריפט הבא כדי לראות את השימוש בערך ארגומנט של שורת הפקודה. סקריפט זה יקרא שלושה ארגומנטים של שורת פקודה אשר יאוחסנו במשתנים, $ operand1, $ operand2 ו- $ operator. כדי לבצע את התסריט בצורה תקינה, ערכי הארגומנט הראשון והשלישי חייבים להיות המספר וערך הארגומנט השני חייב להיות כל אחד מארבעת אופרטורי החשבון ('+', '-', '/', 'x'). אם הצהרה תבדוק את הערך של אופרטור $ ותבצע את הפעולה על סמך המפעיל ותדפיס את הערך.

cl1.sh

#!/bin/bash

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

# אחסן ערכי ארגומנט
אופרנד 1=$ 1
אופרנד 2=3 $
מַפעִיל=2 $

#בדוק את ערך הארגומנט של הפקודה השנייה לביצוע הפעולה האריתמטית
אם [[ מפעיל $=='+' ]]
לאחר מכן
((תוֹצָאָה=אופרנד $ 1+אופרנד 2))
אליף [[ מפעיל $=='-' ]]
לאחר מכן
((תוֹצָאָה=אופרנד $ 1-אופרנד 2))
אליף [[ מפעיל $=='איקס' ]]
לאחר מכן
((תוֹצָאָה=אופרנד $ 1*אופרנד 2))
אליף [[ מפעיל $=='/' ]]
לאחר מכן

((תוֹצָאָה=אופרנד $ 1/אופרנד 2))
לִהיוֹת

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

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטcl1.sh

התסריט מבוצע ארבע פעמים עבור ארבעה סוגים של אופרטורים אריתמטיים. הפלט הבא יופיע עבור ערכי הארגומנט, 6 + 3, 6 - 3, 6 x 3 ו- 6 /3 .

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

cl2.sh

. #! /אני/לַחֲבוֹט

#הדפס את משתני הארגומנט
זרק 'ערכי הטענה הם: $ 1 $ 2'

#קרא כל טענה בנפרד באמצעות לולאה
לכּוֹעֵסב '[מוגן בדוא'ל]'
לַעֲשׂוֹת

#שם וערך נפרדים של ארגומנט
מַפְתֵחַ= $(זרק $ arg | גזירה -f1 -d=)
ערך= $(זרק $ arg | גזירה -f2 -d=)

הודעת הדפסה #מבוססת על שם הארגומנט
מקרה מפתח $ ב
שֵׁם) זרק 'שם התלמיד =ערך $';;
סימן) זרק 'סימן שהושג =ערך $' ;;
*)
esac
בוצע

תְפוּקָה:

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

$לַחֲבוֹטcl2.shשֵׁם= אביר חוסייןסימן=90

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

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

עבור למעלה

חֶשְׁבּוֹן

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

arith.sh

#!/bin/bash
# חשב את הסכום
תוֹצָאָה= $((חמישים+25))
# הדפס ערך סיכום
זרק 'סכום =תוצאה של $'

# חשב את החלוקה
תוֹצָאָה= $((חמישים/25))
# ערך חלוקת הדפסה
זרק 'חלוקה =תוצאה של $'

# הקצה ערך ל- N
נ=10
# ביצוע תוספת מראש
(())
# הדפס את הערך של N
זרק 'ערך לאחר הפחתה =$ N.'

# שימוש באופרטור קצרנות
((N +=10 ))
# הדפס את הערך של N
זרק 'ערך לאחר הוספת 10 =$ N.'

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטarith.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

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

עבור למעלה

מניפולציה של מחרוזות

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

מחרוזת שרשור

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

concat.sh

#!/bin/bash

#התחל את משתנה המחרוזת הראשון
מחרוזת 1='אני אוהב '
#התחל משתנה מחרוזת שני
מחרוזת 2='תכנות באש'
#הדפס לאחר שילוב שני המיתרים
זרק '$ string1$ string2'

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטconcat.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

תוכל ללמוד עוד על שרשור מחרוזות מתוך הדרכה זו.

עבור למעלה

השוואת מחרוזת

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

להשוות.ש

#!/bin/bash
זרקהזן ערך מחרוזת כלשהו
לקרואטֶקסט

#בדוק אם נתוני הקלט שווים לפייתון
אם [ $ טקסט=='פִּיתוֹן' ];לאחר מכן
זרק 'אתה אוהב את פייתון.'
אַחֵר
זרק 'אתה אוהב PERL'
לִהיוֹת

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטלהשוות.ש

הפלט הבא יופיע לאחר הפעלת התסריט שבו ערך הקלט הוא 'PERL'.

אתה יכול לדעת יותר על השוואת מחרוזות מ הדרכה זו .

מחרוזת פיצול

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

split.sh

#!/bin/bash
#הזן ערך מחרוזת
זרקהזן ערך מחרוזת
לקרואטֶקסט
# הגדר את התוחם
IFS=''
#פיצול הערך של טקסט $ למערך המבוסס על תוחם שטח
לקרוא arr<<< '$ טקסט'
# הדפס כל ערך של המערך
לערךב '$ {arr [@]}';
לַעֲשׂוֹת
printf 'ערך $ n'
בוצע

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטsplit.sh

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

אתה יכול לדעת יותר על השוואת מחרוזות מ הדרכה זו .

שינוי מקרה של המחרוזת

לרוב שפות הסקריפטים יש פונקציות מובנות לשינוי המקרה של נתוני המחרוזת. אך ניתן לשנות את המקרה של נתוני המחרוזת ב- bash באמצעות `tr` פקודה או באמצעות ':עֶלִיוֹן' ו ':נמוך יותר' מילות מפתח. צור קובץ bash עם הסקריפט הבא כדי לדעת את הדרכים לשינוי רישיות ב- bash. כאן, נתוני המחרוזת הראשונה מומרים לאותיות גדולות באמצעות '^^' הסמל והמחרוזת השנייה מומרת לאותיות קטנות באמצעות `tr` פקודה. `tr` הפקודה תחפש את כל האותיות הגדולות במחרוזת ותמיר את התווים לאותיות קטנות.

case.sh

#!/bin/bash

#התחל את נתוני המחרוזת הראשונה
טקסט 1='[מוגן בדוא'ל]'

#הדפס את הערך של $ text1 על ידי המרת כל התווים לאותיות גדולות
זרק $ {email ^^}

#התחל את נתוני המחרוזת השנייה
טקסט 2= 'יסודות תכנות הבש'

#הדפס את הערך של $ text2 על ידי המרת כל אותיות גדולות לאותיות קטנות
זרק $ text2 | NS [:עֶלִיוֹן:] [:נמוך יותר:]

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטcase.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

אתה יכול לדעת יותר על השוואת מחרוזות מ הדרכה זו .

עבור למעלה

קריאת נתוני מחרוזת דרך הלולאה

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

readstr.sh

#!/bin/bas
# קרא כל מילה בטקסט באמצעות לולאה
לערךבתכנות Bashלהמתחילים
לַעֲשׂוֹת
זרק ערך $
בוצע

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטreadstr.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

אתה יכול לדעת יותר על איטרציה של נתוני מחרוזות באמצעות הלולאה מ הדרכה זו .

עבור למעלה

החזרת קודי החזרה מסקריפט ותפיסת סקריפט אחר

סקריפט bash אחד יכול לתפוס קודי החזרה מסקריפט אחר על ידי קריאה לתסריט ושימוש '$?' כדי לקרוא את ערך ההחזרה. נניח, קובץ bash בשם first.sh מחזיר קוד לאחר הביצוע. צור קובץ bash נוסף בשם second.sh והוסף את הסקריפט הבא כדי לתפוס את ערך ההחזרה ולבצע כמה משימות אחרות. הקוד של שני הקבצים ניתן להלן. first.sh הקובץ יקרא מ second.sh הקובץ בתחילת התסריט. first.sh יחזיר קוד יציאה המבוסס על ערך הקלט. second.sh יתפוס את הקוד לפי '$?' והשווה עם 1. אם שני הערכים שווים אז הוא יודפס, מספר הקלט גדול מ -100 , אחרת הוא יודפס, מספר הקלט פחות או שווה ל -100 .

first.sh

#!/bin/bash

זרק 'הזן ערך מספרי'
לקרואנ

# בדוק שערך הקלט פחות או שווה ל -100 או לא
אם [[ $ n 100 ]]
לאחר מכן
יְצִיאָה 0
אַחֵר
יְצִיאָה 1
לִהיוֹת

second.sh

#! /bin/bash

#בצע את הקובץ, first.sh
לַחֲבוֹט 'first.sh'

#בדוק שקוד ההחזרה שווה ל- 1 או לא
אם [ $? -משווה 1 ]
לאחר מכן
זרק 'מספר הקלט גדול מ -100'
אַחֵר
זרק 'מספר הקלט פחות או שווה ל -100'
לִהיוֹת

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטsecond.sh

הפלט הבא יופיע כאשר התסריט יופעל על ידי 55 ו -110 במשך פעמיים.

עבור למעלה

קריאה וכתיבה לקבצים

קריאה וכתיבה של קבצים הם דרישות נפוצות של תכנות bash. ל- Bash אין פונקציה מובנית כמו שפה אחרת לקריאה או כתיבה של הקובץ. ישנן מספר דרכים לקרוא את הקובץ ב- bash. הדרך הנפוצה ביותר לקרוא או לכתוב קובץ ב- bash היא שימוש `חתול` פקודה. אך פקודה זו משמשת לקריאת כל התוכן של הקובץ בכל פעם. ניתן גם לקרוא כל קובץ שורה אחר שורה באמצעות כל לולאה ו- `לקרוא` פקודה. באמצעות אופרטור הפניה מחדש, '>' , אתה יכול לכתוב נתונים לכל קובץ ב- bash. אם אתה רוצה לצרף נתונים לקובץ כלשהו, ​​עליך להשתמש '>>' מַפעִיל. פעולות הקריאה והכתיבה של הקבצים מוצגות בחלק הבא של פרק זה.

קובץ קריאת bash

צור קובץ bash עם הסקריפט הבא כדי לקרוא קובץ קיים בשם ' hardware.txt '. תוכן קובץ זה ניתן להלן. בתסריט, כל תוכן הקובץ נקרא על ידי `חתול` הפקודה תחילה והבא, בעוד הלולאה משמשת לקריאת הקובץ שורה אחר שורה.

hardware.txt

צג
מקלדת
עכבר
סוֹרֵק
מדפסת

readfile.sh

#!/bin/bash

זרק 'קריאת קובץ באמצעות פקודת cat'

# קרא את תוכן הקובץ באמצעות הפקודה `cat '
תוֹכֶן='חתולhardware.txt'
זרק $ תוכן

זרק 'קריאת קובץ שורה אחר שורה באמצעות לולאה'

# הקצה את שם הקובץ
שם קובץ='hardware.txt'

# כל שורה בקובץ תקרא על ידי כל איטרציה של הלולאה
בזמן לקרואקַו;
לַעֲשׂוֹת
# הדפס את השורה
זרק שורה $
בוצע<$ קובץ

תְפוּקָה:

הפעל את הפקודות הבאות.

$חתולhardware.txt
$לַחֲבוֹטreadfile.sh

כאן, הפקודה הראשונה תדפיס את תוכן הקובץ, hardware.txt ללא הפעלת סקריפט bash והפקודה השנייה תריץ את התסריט של readfile.sh והדפיס את תוכן הקובץ פעמיים באמצעות `חתול` פקודה ו `לקרוא` פקודה עם לולאת while. אתה יכול לבקר בזה הדרכה כדי לדעת יותר על קריאת קובץ שורה אחר שורה.

כתיבת קובץ ב- bash

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

skrivefile.sh

#!/bin/bash

זרק 'הכנס טקסט'
#קרא נתוני מחרוזת
לקרואstr1
#הוסף נתוני קלט לקובץ בפעם הראשונה
זרק $ str1 >test.txt

זרק 'הזן טקסט אחר'
#קרא עוד נתוני מחרוזת
לקרואstr2
#הוסף נתוני קלט בסוף הקובץ
זרק $ str2 >>test.txt

#הצגת התוכן המלא של הקובץ
זרק 'חתולtest.txt'

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטskrivefile.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

עבור למעלה

צינורות

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

תחביר:

פקודה 1|פקודה 2|...

כאן, הפלט של הפקודה 1 יועבר כקלט של פקודה 2.

אותו סוג משימה מתבצע עם צינור וללא צינור בחלק הבא של קטע זה. נניח שקובץ טקסט בשם marks.txt ניתן עם הנתונים הבאים.

marks.txt

אסרף CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

אסרף CSE-304 88

Keya CSE-409 90

אסרף CSE-101 92

עליך למיין את נתוני הקובץ ולברר ולהדפיס את כל הערך של שם התלמיד 'K כן ' . תוכל לבצע משימה זו על ידי הפעלת פקודות מרובות מבלי להשתמש בצינור המוצג בחלק הבא. הפקודות הבאות יצטרכו לפעול כדי לקבל את הפלט הרצוי. הפקודה הראשונה תמיין את הקובץ. הפקודה השנייה תחפש בערך 'K כן ' באמצעות ` אחיזה `פקודה ושמור את הפלט ב טקסט זמני קוֹבֶץ. הפקודה השלישית תספור את כל השורות של a temp.txt קובץ באמצעות 'wc' פקודה.

$סוגmarks.txt
$אחיזה 'קיה'marks.txt>temp.txt
$שירותים temp.txt

תְפוּקָה:

שתי ערכים של התלמיד, 'קיה' קיימים בקובץ. אז לאחר הפעלת הפקודות לעיל, יופיע הפלט הבא.

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

$סוגmarks.txt| אחיזה 'קיה' | שירותים

תְפוּקָה:

לאחר הפעלת הפקודה לעיל תקבל את הפלט הבא כמו הפלט של הפקודה הקודמת. פלט הפקודה יהיה 2.

עבור למעלה

סיכום:

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