OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

אסימונים חסרים או בלתי צפויים

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



#! / bin / bash


# בעיה: סקריפט להדגמת שגיאות נפוצות מספר=1

אם [ $number = 1 ] אז

echo "מספר שווה ל-1." אַחֵר

echo "המספר אינו שווה ל-1."

fi

#! / bin / bash


# בעיה: סקריפט להדגמת שגיאות נפוצות מספר=1

אם [ $number = 1 ] אז

echo "מספר שווה ל-1." אַחֵר

echo "המספר אינו שווה ל-1."

fi


התוצאה היא זו:



[me@linuxbox ~]$ צרה

/home/me/bin/trouble: שורה 9: שגיאת תחביר ליד אסימון לא צפוי

'אחר'

/home/me/bin/trouble: שורה 9: `else'

[me@linuxbox ~]$ צרה

/home/me/bin/trouble: שורה 9: שגיאת תחביר ליד אסימון לא צפוי

'אחר'

/home/me/bin/trouble: שורה 9: `else'


שוב, הודעת השגיאה מצביעה על שגיאה שמתרחשת מאוחר יותר מהבעיה בפועל. מה שקורה באמת די מעניין. כזכור, if מקבל רשימה של פקודות ומעריך את קוד היציאה של הפקודה האחרונה ברשימה. בתוכנית שלנו, אנו מתכוונים שהרשימה הזו תהיה מורכבת מפקודה אחת, [, מילה נרדפת למבחן. ה [ הפקודה לוקחת את מה שאחריו כרשימה של ארגומנטים; בענייננו ארבע טענות: מספר $, 1, =, ו ]. עם הסרת נקודה-פסיק, המילה אז מתווסף לרשימת הטיעונים, שהיא חוקית מבחינה תחבירית. הבאים הד גם הפקודה היא חוקית. זה מתפרש כפקודה נוספת ברשימת הפקודות if יעריך קוד יציאה. ה אחר הוא נתקל בשלב הבא, אבל זה לא במקום, מכיוון שהקליפה מזהה אותו בתור א מילה שמורה (מילה שיש לה משמעות מיוחדת לקליפה) ולא שם של פקודה, ומכאן הודעת השגיאה.


מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: