עוד על מעטפת סקריפט: הוספת תנאים GUI
במאמר האחרון שלנו, הלכנו על כמה קל לשימוש טריקים לעשות סקריפטים פגז פשוט אך שימושי. עכשיו נצלול קצת יותר ונוסיף להם קצת אינטליגנציה.
שימוש בהתניות
אם אתה זוכר את התסריט שכתבנו בפעם האחרונה, הוא ניהל שורה של פקודות שהשתמשו ב- Pandoc כדי ליצור ארבע גרסאות של מסמך Markdown (בכל אחד מ- HTML, DOCX, ODT ו- ePub). אבל זה היה הכול או לא כלום ... או שהשתמשנו בפנדוק עצמו כדי להפוך אותם אחד אחד, או את כולם. מה אם רצינו לבחור ולבחור?
זה פשוט באמצעות התניות, שהן בעצם " אם X זה, ואז לעשות את זה " הצהרות. בוא נסתכל על הסקריפט כפי שהיה לנו:
#! / bin / bash pandoc -r markdown -w html -o $ 1.html $ 1 && pandoc -r markdown -w docx -o $ 1.docx $ 1 && pandoc -r markdown -w odt -o $ 1.odt $ 1 && pandoc - r markdown -w epub-$ 1.epub $ 1
נניח שאנחנו רוצים להיות מסוגלים לבחור אחד הפריטים לעיל בשורת הפקודה, או לעשות את כולם. שינוי מהיר של התסריט pandoc-pub.sh כמו זה יהיה להשיג בדיוק את זה:
# $ / bin / bash file = $ 1 export = $ 2 אם ["$ export" == "html"] ולאחר מכן pandoc -r markdown -w html -o $ file.html $ elif file ["$ export" == "docx "] ואז pandoc -r markdown -w docx-o $ file.docx $ elif file [" $ export "==" odt "] ואז pandoc -r markdown -w odt-$ file.odt $ file elif [" $ יצא "==" epub "] ולאחר מכן pandoc -r markdown -w epub-$ $ file.epub $ file fi
הדבר הראשון שעשינו כאן הוא לתת את שני המשתנים שאנחנו רוצים משמות שורת הפקודה: קובץ (שהוא קובץ המקור Markdown), וייצוא (שהוא הפורמט שאנחנו רוצים לייצא אליו, אז עכשיו אנחנו יכולים לבחור ולבחור מה אנחנו רוצים ליצור באמצעות:
pandoc-pub.sh [קובץ שברצונך להמיר] .md [אחד משני "html", "docx", "odt" או "epub"]
אבל מה עם כל העשב? אנחנו יכולים לעשות את זה בפעם האחרונה, אבל לא עכשיו? ובכן, אם אנחנו חושבים קצת קדימה, אנחנו צריכים להסביר מקרה שבו אנחנו (או משתמש אחר) נכנס משהו מלבד ארבע האפשרויות לעיל - במקרה זה, למה לא לייצא הכל? הוסף עוד קוד אחד, באופן הבא:
# $ / bin / bash file = $ 1 export = $ 2 אם ["$ export" == "html"] ולאחר מכן pandoc -r markdown -w html -o $ file.html $ elif file ["$ export" == "docx "] ואז pandoc -r markdown -w docx-o $ file.docx $ elif file [" $ export "==" odt "] ואז pandoc -r markdown -w odt-$ file.odt $ file elif [" $ לייצא "==" epub "] ואז pandoc -R markdown -w epub-$ $ file.epub קובץ אחר pandoc -r markdown -w HTML-file $ $ file.html $ file && pandoc -r markdown -w docx-o $ file.docx $ file && pandoc -r markdown -w odt-file $ $ file.odt $ file && pandoc -r markdown -w epub-$ $ file.epub $ file fi
עכשיו, אם אנחנו נכנסים כלום אחרי שם הקובץ בשורת הפקודה (או את הדבר הלא נכון), סקריפט זה פשוט לעשות את הדבר בטוח וליצור את כל הפורמטים.
הוספת GUI
אבל מה אם, במקרה האחרון הזה, אתה לא רוצה שזה פשוט ליצור הכל, אבל לעשות משהו יותר מועיל. אנחנו יכולים להוסיף עוד אחד
אליף
כדי ליצור את כל הפורמטים כאשר "הכל" מוזן בשורת הפקודה, ולשנות את ההצהרה כדי להדפיס טקסט עזרה:
# $ / bin / bash file = $ 1 export = $ 2 אם ["$ export" == "html"] ולאחר מכן pandoc -r markdown -w html -o $ file.html $ elif file ["$ export" == "docx "] ואז pandoc -r markdown -w docx-o $ file.docx $ elif file [" $ export "==" odt "] ואז pandoc -r markdown -w odt-$ file.odt $ file elif [" $ לייצא "==" epub "] ואז pandoc -r markdown -w epub-$ $ file.epub $ קובץ elif [" ייצוא $ "==" all "] ואז pandoc -r markdown -w html -o $ file.html $ file && pandoc -r markdown -w docx-o $ file.docx $ file && pandoc -r markdown -w odt-file $ $ file.odt $ file && pandoc -r markdown -w epub-file $ $ file אחר הד "אנא הוסף אחת מהאפשרויות הבאות לאחר שם הקובץ: HTML, odt, docx, epub או all." Fi
אבל זה יהיה יותר שימושי, במקרה של דגל ריק או שגוי, אנו מציגים GUI כדי לעזור למשתמש יחד. ראשית, נצטרך להתקין קבוצה של כלים בשם Zenity כדי לעזור לנו. באפשרותך להתקין זאת ממרכז התוכנה או להשתמש בפקודה הבאה:
sudo apt-get להתקין zenity
הבא, נצטרך להשתמש Zenity כדי ליצור שיח עבורנו. אנחנו רוצים משהו שבו המשתמש יכול לבחור את כל או חלק מהאפשרויות שיש לנו זמין ... תיבות הסימון נשמע כמו הדבר הנכון כאן. לכן אנו יוצרים תיבת דו-שיח Zenity עם תיבות סימון המציגות את כל האפשרויות שלנו:
# # / bin / bash zenity --list --checklist --title = "Pandoc Publisher" --column = "" - "column =" Export Format "FALSE" html "FALSE" odt "FALSE" docx "FALSE" epub "
אתה יכול לראות איך את הפקודה Zenity לעיל נבנה על ידי קריאת המדריך כאן. הבא, אנחנו צריכים לקבל את הרשימה של מה שהמשתמש בודק, ולהקצות אותו משתנה. הוספת שם משתנה ועטיפת הפקודה Zene בסוגריים, והוספת סימן "$" יגידו לקליפה להחליף את הפקודה שבתוכה כאשר היא תבוצע:
# # / bin / bash options = $ (zenity --list --checklist --title = "Pandoc Publisher" --column = "" --column = "Export Format" FALSE "html" FALSE "odt" FALSE "docx "FALSE" epub ");
עכשיו יש לנו משתנה "$ options" שמכיל רשימה (מופרדים על ידי "|" כברירת מחדל) של כל האפשרויות שנבחרו. עלינו לבדוק אם הרשימה הזו מכילה אחד מהפורמטים שאנחנו מתכננים לטפל בהם באמצעות "= ~" במקום "==" (פעולה זו בודקת אם משהו מכיל משהו אחר, במקרה זה) ... עבור דוגמא:
אם [[$ options = ~ "html"]]
לבסוף, שינוי מהיר של הסקריפט יציג תיבת דו-שיח זו כאשר לא יוצג פורמט, ולאחר מכן הפעל את הפקודה המתאימה של Pandoc כאשר אפשרות זו מסומנת בתיבת הדו-שיח:
# $ / bin / bash file = $ 1 export = $ 2 אם ["$ export" == "html"] ולאחר מכן pandoc -r markdown -w html -o $ file.html $ elif file ["$ export" == "docx "] ואז pandoc -r markdown -w docx-o $ file.docx $ elif file [" $ export "==" odt "] ואז pandoc -r markdown -w odt-$ file.odt $ file elif [" $ לייצא "==" epub "] ואז pandoc -r markdown -w epub-$ $ file.epub $ קובץ elif [" ייצוא $ "==" all "] ואז pandoc -r markdown -w html -o $ file.html $ file && pandoc -r markdown -w docx-o $ file.docx $ file && pandoc -r markdown -w odt-file $ $ file.odt $ file && pandoc -r markdown -w epub-file $ $ file אחר אפשרויות = $ (zenity --list --checklist --title = "Pandoc Publisher" --column = "" - column = "ייצוא פורמט" FALSE "html" FALSE "odt" FALSE "docx" FALSE "epub" ); אם [[$ options = ~ "html"]] ולאחר מכן pandoc -r markdown -w html-o $ file.html $ file; Fi [[$ options = ~ "odt"]] ולאחר מכן pandoc -r markdown -w docx-o $ file.docx $ file; Fi [[$ options = ~ "docx"]] ולאחר מכן pandoc -r markdown -w odt-$ $ file.odt $ file; Fi [[$ options = ~ "epub"]] ולאחר מכן pandoc -r markdown -w epub-$ $ file.epub $ file; fi fi
בדיוק כך, יישום מותאם אישית עם GUI ואפשרויות שורת הפקודה.