Bash Subshells

Bash Subshells



לפעמים, זה דורש ממך להריץ פקודה או סקריפטים אחת או יותר ברקע. משימה זו יכולה להיעשות על ידי כתיבת כל הפקודות או הסקריפטים לתוך קובץ סקריפט וביצוע הקובץ באמצעות אמפרסנד (&) או ביצוע הפקודות או הסקריפטים לתוך המשנה מהמעטפת הנוכחית. ניתן להשתמש בתת-המעטפת לביצוע פקודות או סקריפטים מרובים על-ידי סגירה עם ה-$() או ה-backticks (`). שיטות השימוש ב-Bash subshell מוצגות במדריך זה.

דוגמאות שונות של Subshell

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

דוגמה 1: בצע את ה-Subshell באמצעות המרכאות הבודדות והמרכאות הכפולות

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







#!/bin/bash

#הדפס את פקודת `תאריך` בתת-המעטפת

הֵד 'היום זה `תאריך` '

#הגדר משתנה מחרוזת

strVal = 'Subshell Bash'

#הדפס את המשתנה בתת-המעטפת באמצעות מרכאות בודדות

הֵד 'הפלט של מרכאות בודדות:' '$(echo $strVal)'

#הדפס את המשתנה בתת-המעטפת באמצעות מרכאות כפולות

הֵד 'הפלט של מרכאות כפולות:' ' $(echo $strVal) '

הפלט הבא מופיע לאחר ביצוע הסקריפט. סקריפט המשנה מודפס כמחרוזת כאשר הוא מוקף במירכאות בודדות. סקריפט המשנה מבוצע כאשר הוא מוקף במירכאות הכפולות:





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

צור קובץ Bash עם הסקריפט הבא שלוקח את סיומת הקובץ כקלט מהמשתמש. לאחר מכן, הפקודה 'ls' מבוצעת בתת-המעטפת כדי לחפש בכל הקבצים של הרחבה המסוימת הזו.





#!/bin/bash

הֵד 'הזן את שם סיומת הקובץ:'

#קח את שם סיומת הקובץ שיחפש

לקרוא שלוחה

#בדוק את ערך הקלט

אם [ [ $ext == '' ] ] ; לאחר מכן

#הדפס הודעת שגיאה

הֵד 'לא ניתנת הארכה'.

אַחֵר

הֵד 'שמות קבצים עם $ext סיומת:'

#הדפס את כל שמות הקבצים עם הסיומת הנתונה

הֵד ' $( echo `ls *.$ext` ) '

לִהיוֹת

הפלט הבא מופיע לאחר ביצוע הסקריפט עם הקלט 'txt'. לפי הפלט, קיימים שלושה קבצי טקסט במיקום הנוכחי:



הפלט הבא מופיע לאחר ביצוע הסקריפט עם הערך הריק:

דוגמה 3: בצע את הביטוי האריתמטי ב-Subshell

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

#!/bin/bash

#הגדר משתנה מעטפת אב

מספר = 10

#הדפס את התוצאה על סמך המשתנה של מעטפת האב

( ( תוֹצָאָה = $number + 5 ) )

הֵד 'הסכום של $number +5= תוצאה $ '

#צור משתנה משנה עם אותו שם של מעטפת האב

( מספר = עשרים ; ( ( תוֹצָאָה = $number + 10 ) ) ; הֵד 'הסכום של $number +5= תוצאה $ ' )

#הדפס שוב את התוצאה על סמך המשתנה של מעטפת האב

הֵד 'הסכום של $number +5= תוצאה $ '

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

דוגמה 4: בצע פקודות מרובות ב-Subshell

צור קובץ Bash עם הסקריפט הבא ששולח את הפלט של הפקודה 'echo' לתוך הפקודה 'sed' שמחליפה את ערך המחרוזת התואם במחרוזת אחרת. הפלט של הפקודה 'הד' הוא 'JavaScript'. אז, ערך זה מושווה ל-'Java' ו-'JavaScript'. אם נמצא התאמה, המחרוזות התואמות מוחלפות במחרוזת 'סוג'.

#!/bin/bash

#הגדר ערך מחרוזת

strVal = 'JavaScript'

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

הֵד 'ערך מחרוזת: $strVal '

#הדפס את ערך המשנה

הֵד 'ערך תת מעטפת: '

הֵד ' $(echo $strVal | sed 's|Java|סוג JavaScript|') '

הפלט הבא מופיע לאחר ביצוע הסקריפט. לפי הפלט, מחרוזת 'Java' מוחלפת במחרוזת 'Type'. הפלט של המשנה הוא 'JavaScript TypeScript':


סיכום

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