Menu
Coddy logo textTech

קלט משתמש בסקריפטים

חלק מהיחידה יסודות במסלול ה-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 מקבל את טקסט ההנחיה כארגומנט, ואחריו את שם המשתנה שבו יש לשמור את הקלט.

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

challenge icon

אתגר

קל

צרו סקריפט מעטפת בשם greeter.sh ששואל את המשתמש מה הצבע האהוב עליו ואז מציג הודעה באמצעות הקלט שלו.

הסקריפט שלכם צריך:

  1. להתחיל בשורת shebang (#!/bin/bash)
  2. להשתמש ב-read עם הדגל -p כדי להציג את הבקשה: What is your favorite color?
  3. לשמור את הקלט במשתנה בשם color
  4. להשתמש ב-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!" כדי להציג את התוצאה.

נסו בעצמכם

טרמינל
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Terminal אונליין