רב רובי לתסריטים אין טקסט או ממשקים גרפיים. הם פשוט רצים, עושים את העבודה שלהם ואז יוצאים. כדי לתקשר עם סקריפטים אלה כדי לשנות את התנהגותם, יש להשתמש בטיעוני שורת פקודה.
שורת הפקודה היא מצב הפעולה הרגיל עבור פקודות UNIX, ומכיוון שרובי משמש בהרחבה מערכות דמויות UNIX ו- UNIX (כמו לינוקס ו- macOS), זה די סטנדרטי להיתקל בסוג זה של תכנית.
כיצד לספק טיעוני שורת פיקוד
טיעוני תסריט של אודם מועברים לתוכנית Ruby על ידי המעטפת, התוכנית שמקבלת פקודות (כגון bash) במסוף.
בשורת הפקודה כל טקסט אחר שם התסריט נחשב לטיעון בשורת הפקודה. מופרדים על ידי רווחים, כל מילה או מחרוזת יועברו כטיעון נפרד לתוכנית Ruby.
הדוגמה הבאה מציגה את התחביר המתאים לשימוש בהפעלת ה- test.rb תסריט רובי משורת פקודה עם הוויכוחים מבחן 1 ו מבחן 2.
$ ./test.rb test1 test2
אתה עלול להיתקל במצב בו אתה צריך להעביר ויכוח לתוכנית רובי אך יש מקום בפקודה. בתחילה זה נראה בלתי אפשרי שכן הקונכייה מפרידה בין ויכוחים על חללים, אך קיימת הוראה לכך.
כל טיעון בציטוטים כפולים לא יופרד. הציטוטים הכפולים מוסרים על ידי הקליפה לפני שהם מועברים לתוכנית האודם.
הדוגמה הבאה מעבירה טיעון בודד ל test.rb תסריט רובי, מבחן 1:
$ ./test.rb "test1 test2"
כיצד להשתמש בטיעוני שורת פיקוד
בתוכניות Ruby שלך, אתה יכול לגשת לכל טיעוני שורת פקודה שהועברו על ידי הקליפה באמצעות ה- ARGV משתנה מיוחד. ARGV הוא משתנה מערך המחזיק, כמחרוזות, כל טיעון המועבר על ידי הקליפה.
תוכנית זו חוזרת על פני התוכנית ARGVמערך ומדפיס את תוכנו:
#! / usr / bin / env אודם. ARGV.each do | a | מכניס "טיעון: # {א}" סוף
להלן קטע של סשן bash בו משיקים סקריפט זה (שנשמר כקובץ test.rb) עם מגוון ארגומנטים:
$ ./test.rb test1 test2 "שלוש ארבע" טיעון: מבחן 1. טיעון: מבחן 2. טיעון: שלוש ארבע