קלט משתמש בסקריפטים
חלק מהיחידה יסודות במסלול ה-Terminal של Coddy. שיעור 69 מתוך 82.
משתנים הם שימושיים, אבל לפעמים רוצים שהתסריט יבקש מהמשתמש מידע בזמן שהוא פועל. הפקודה read משהה את התסריט ומחכה שהמשתמש יקליד משהו, ואז שומרת את הקלט הזה במשתנה.
כך זה עובד:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"כאשר הסקריפט הזה רץ, הוא מדפיס את השאלה, ממתין שהמשתמש יקליד את שמו וילחץ על Enter, ואז מברך אותו. הפקודה read מקבלת את כל מה שהמשתמש מקליד ושומרת אותו במשתנה name.
אפשר להפוך את ההנחיה לנקייה יותר באמצעות הדגל -p, שמשלב את הודעת ההנחיה ואת הקלט באותה שורה:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"הפקודה מציגה את Enter your name: וממתינה לקלט באותה שורה, כך שהמראה מלוטש יותר. הדגל -p מקבל את טקסט ההנחיה כארגומנט, ואחריו את שם המשתנה שבו יש לשמור את הקלט.
קלט מהמשתמש הופך סקריפטים לאינטראקטיביים ולניתנים להתאמה. במקום לקבוע ערכים ישירות בקוד, אפשר לכתוב סקריפט אחד שפועל באופן שונה בהתאם למה שהמשתמש מספק בכל פעם שהוא מריץ אותו.
אתגר
קלצרו סקריפט מעטפת בשם greeter.sh ששואל את המשתמש מה הצבע האהוב עליו ואז מציג הודעה באמצעות הקלט שלו.
הסקריפט שלכם צריך:
- להתחיל בשורת shebang (
#!/bin/bash) - להשתמש ב-
readעם הדגל-pכדי להציג את הבקשה:What is your favorite color? - לשמור את הקלט במשתנה בשם
color - להשתמש ב-
echoכדי להדפיס:Nice! [color] is a great color!(כאשר [color] הוא הקלט של המשתמש)
הפכו את הסקריפט לבר־הרצה, ואז הריצו אותו עם blue כקלט. הטרמינל הזה אינו אינטראקטיבי, ולכן אינו יכול לעצור ולהמתין שתקלידו. שלחו את התשובה לסקריפט באמצעות צינור:
echo "blue" | ./greeter.shהפלט שלכם צריך להיות:
Nice! blue is a great color!הערה: ההנחיה
What is your favorite color?אינה מוצגת כאן.read -pמדפיס את ההנחיה שלו רק כשהקלט מגיע מהמקלדת, וכאן הוא מגיע מהצינור.
עטפו כל שורה שאתם כותבים במירכאות יחידות:
echo 'echo "Hello $name"' >> script.sh. מירכאות יחידות מונעות מהמעטפת להחליף את$nameבזמן כתיבת הקובץ, כך שהסקריפט שומר את המשתנה ומרחיב אותו כשהוא רץ. מירכאות כפולות היו מציבות את הערך במקומו מיד.
רמז: בנו את הסקריפט שורה אחר שורה באמצעות
echoעם הפניה. השתמשו ב-read -p "What is your favorite color? " colorכדי להציג בקשה ולקבל את הקלט, ואז ב-echo "Nice! $color is a great color!"כדי להציג את התוצאה.
נסו בעצמכם
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7תוכן הקובץ
ראש וזנבספירת מיליםפקודת המיוןפקודת הסינון לכפילויותיסודות grepgrep עם דגליםסיכום – בלש/ית טקסט13יסודות כתיבת סקריפטים ב-Shell
מהו סקריפט Shellיצירה והרצה של סקריפטמשתנים בסקריפטיםקלט משתמש בסקריפטיםמשפט ifלולאת forלולאת whileסיכום – נחשו את המספר2ניווט
הצגת ספריית העבודההצגת קבציםשינוי ספרייהנתיבים מוחלטים לעומת יחסייםספריית הבית וספריית השורשסיכום – מצאו את הדרך8ניתוב מחדש
פלט סטנדרטיכתיבה לקובץ תוך דריסת התוכןהוספה לקובץקלט סטנדרטישגיאה סטנדרטיתסיכום – בונה יומני רישום14פרויקט סקריפט לגיבוי
סקירת הפרויקטקבלת נתיב המקורתרגלו בעצמכם: Terminal אונליין