שיעור 19: סקריפטים ב-Shell
פקודת ה-tar מהשיעור הקודם עובדת — אבל כשהיא רצה ב-cron אי-אפשר לדעת אם הצליחה. עוטפים אותה בסקריפט bash: #!/bin/bash בשורה הראשונה אומר לאיזה מפרש להעביר את הסקריפט. DEST=/backups מגדיר משתנה; $DEST משתמש בו. chmod +x backup.sh מוסיף הרשאת הרצה. $? אחרי הפקודה מחזיר 0 בהצלחה או קוד שגיאה אחר ב-כישלו
סקריפט הוא כמו מתכון כתוב: #!/bin/bash אומר 'לבשל עם bash', ו-chmod +x נותן רשות לבשל. DEST=/backups שומר כתובת על פתק, ו-$DEST קורא את הפתק. $? הוא הטעימה בסוף הבישול — 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.