OnWorks Linux ו-Windows Online WorkStations

לוגו

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

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

אפליקציה מלאה יותר

אחרי הפסקה ארוכה, אנחנו הולכים לחדש את העבודה על שלנו sys_info_page תכנית. התוספת הבאה שלנו תוסיף מספר אפשרויות של שורת פקודה לתוכנית באופן הבא:

קובץ פלט. נוסיף אפשרות לציין שם לקובץ שיכיל את הפלט של התוכנית. זה יצוין בתור או -f פילה or --קוֹבֶץ פילה.

מצב אינטראקטיבי. אפשרות זו תבקש מהמשתמש שם קובץ פלט ותקבע אם הקובץ שצוין כבר קיים. אם כן, המשתמש יקבל הנחיה לפני שהקובץ הקיים יוחלף. אפשרות זו תצוין על ידי אחד מהם -i or --אינטראקטיבי.

עזרה. או -h or - עזרה עשוי להיות מוגדר כדי לגרום לתוכנית להפיק הודעת שימוש אינפורמטיבית.

להלן הקוד הדרוש ליישום עיבוד שורת הפקודה:



שימוש () {

echo "$PROGNAME: שימוש: $PROGNAME [-f file | -i]" חוזר

}

# process שורת הפקודה אפשרויות interactive=

שימוש () {

echo "$PROGNAME: שימוש: $PROGNAME [-f file | -i]" חוזר

}

# process שורת הפקודה אפשרויות interactive=


שם קובץ=


while [[ -n $1 ]]; עשה מקרה $1 אינץ'

-f | --קוֹבֶץ)

משמרת

שם קובץ=$1

;;

שם קובץ=


while [[ -n $1 ]]; עשה מקרה $1 אינץ'

-f | --קוֹבֶץ)


-י | --אינטראקטיבי) אינטראקטיבי=1

;;

-h | --help) יציאה מהשימוש

;;

*) שימוש >&2

צא מ- 1

;;

-י | --אינטראקטיבי) אינטראקטיבי=1

;;

-h | --help) יציאה מהשימוש

;;

*) שימוש >&2

צא מ- 1

;;


esac

משמרת בוצעה

esac

משמרת בוצעה


תמונה

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

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

$1 אינו ריק. בסוף הלולאה, יש לנו פקודת shift כדי לקדם את הפרמטרים המיקוםיים כדי להבטיח שהלולאה תסתיים בסופו של דבר.

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

אל האני -f פרמטר מטופל בצורה מעניינת. כאשר מזוהה, זה גורם לתוספת משמרת להתרחש, מה שמקדם את הפרמטר המיקום $1 לארגומנט שם הקובץ שסופק ל- -f אוֹפְּצִיָה.

לאחר מכן נוסיף את הקוד כדי ליישם את המצב האינטראקטיבי:



# מצב אינטראקטיבי


if [[ -n $אינטראקטיבי ]]; ואז בעוד אמת; לַעֲשׂוֹת

read -p "הזן את שם קובץ הפלט: "שם הקובץ אם [[ -e $filename]]; לאחר מכן

קרא -p "'$filename' קיים. להחליף? [y/n/q] > " מקרה $REPLY ב

Y|y) הפסקה

# מצב אינטראקטיבי


if [[ -n $אינטראקטיבי ]]; ואז בעוד אמת; לַעֲשׂוֹת

read -p "הזן את שם קובץ הפלט: "שם הקובץ אם [[ -e $filename]]; לאחר מכן

קרא -p "'$filename' קיים. להחליף? [y/n/q] > " מקרה $REPLY ב

Y|y) הפסקה


;;

Q|q) הד "התוכנית הסתיימה." יְצִיאָה

;;

*) להמשיך

;;

esac

elif [[ -z $filename]]; ואז להמשיך

אחר

לשבור

fi

עשה

fi

;;

Q|q) הד "התוכנית הסתיימה." יְצִיאָה

;;

*) להמשיך

;;

esac

elif [[ -z $filename]]; ואז להמשיך

אחר

לשבור

fi

עשה

fi


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

על מנת ליישם את תכונת שם קובץ הפלט, עלינו להמיר תחילה את קוד כתיבת העמוד הקיים לפונקציית מעטפת, מסיבות שיתבררו בעוד רגע:



write_html_page () { חתול <<- _EOF_

$TITLE

$TITLE

$TIMESTAMP

$(report_uptime)

$(report_disk_space)

$(report_home_space)

_EOF_ לחזור

}


# פלט דף HTML


if [[ -n $filename ]]; לאחר מכן

write_html_page () { חתול <<- _EOF_

$TITLE

$TITLE

$TIMESTAMP

$(report_uptime)

$(report_disk_space)

$(report_home_space)

_EOF_ לחזור

}


# פלט דף HTML


if [[ -n $filename ]]; לאחר מכן


אם גע ב-$filename && [[ -f $filename]]; ואז write_html_page > $filename

אחר

echo "$PROGNAME: לא ניתן לכתוב את הקובץ '$filename'" >&2 יציאה 1

פי אחר

write_html_page

fi

אם גע ב-$filename && [[ -f $filename]]; ואז write_html_page > $filename

אחר

echo "$PROGNAME: לא ניתן לכתוב את הקובץ '$filename'" >&2 יציאה 1

פי אחר

write_html_page

fi


הקוד שמטפל בלוגיקה של -f האפשרות מופיעה בסוף הרשימה המוצגת למעלה. בו אנו בודקים את קיומו של שם קובץ ובמידה ונמצא כזה, מתבצעת בדיקה כדי לראות אם הקובץ אכן ניתן לכתיבה. לשם כך, א לגעת מתבצע, ולאחר מכן בדיקה כדי לקבוע אם הקובץ המתקבל הוא קובץ רגיל. שתי הבדיקות האלה מטפלות במצבים שבהם מוזן שם נתיב לא חוקי (לגעת ייכשל), ואם הקובץ כבר קיים, שזה קובץ רגיל.

כפי שאנו רואים, ה- write_html_page הפונקציה נקראת לבצע את היצירה בפועל של הדף. הפלט שלו מכוון לפלט סטנדרטי (אם המשתנה שם קובץ ריק) או מנותב מחדש לקובץ שצוין.


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