שיעור 19: סקריפטים ב-Shell
פקודת ה-tar מהשיעור הקודם עובדת — אבל כשהיא רצה ב-cron אי-אפשר לדעת אם הצליחה. עוטפים אותה בסקריפט bash: #!/bin/bash בשורה הראשונה אומר לאיזה מפרש להעביר את הסקריפט. DEST=/backups מגדיר משתנה; $DEST משתמש בו. chmod +x backup.sh מוסיף הרשאת הרצה. $? אחרי הפקודה מחזיר 0 בהצלחה או קוד שגיאה אחר ב-כישלו
סקריפט הוא כמו מתכון כתוב. #!/bin/bash אומר 'תבשל עם bash'. DEST=/backups שומר כתובת בפתק. $DEST קורא את הפתק. chmod +x אומר 'מותר לבשל'. $? הוא הטעם אחרי הבישול — 0 = טעים.
- shebang (#!/bin/bash)
- השורה הראשונה של סקריפט — מציינת איזה מפרש יריץ אותו. #! מסמן את זה, /bin/bash הוא הנתיב ל-bash. ללא shebang, המערכת מנחשת את המפרש.
- משתנה ב-bash
- NAME=value מגדיר (ללא רווחים). $NAME משתמש בערך. "$NAME" עם גרשיים כפולות מגן מפני word splitting אם הערך כולל רווחים.
- קוד יציאה ($?)
- קוד שכל פקודה מחזירה: 0 = הצלחה, כל ערך אחר = כשלון. $? מחזיק את הקוד של הפקודה האחרונה. חייב להיקרא מיד לפני שפקודה אחרת דורסת אותו.
- chmod +x
- מוסיף הרשאת הרצה לסקריפט. ללא זה, ./script.sh יחזיר 'Permission denied'. chmod +x script.sh מאפשר ./script.sh; bash script.sh עובד גם בלי chmod +x.