Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

การสร้างเทมเพลตสคริปต์ทุบตี

ในบทความแรกในชุดนี้ คุณได้สร้างสคริปต์ Bash แบบบรรทัดเดียวขนาดเล็กมาก และสำรวจสาเหตุของการสร้างเชลล์สคริปต์และสาเหตุที่เป็นตัวเลือกที่มีประสิทธิภาพมากที่สุดสำหรับผู้ดูแลระบบ แทนที่จะเป็นโปรแกรมที่คอมไพล์แล้ว

ในบทความที่สองนี้ คุณจะเริ่มสร้างเทมเพลตสคริปต์ทุบตีที่สามารถใช้เป็นจุดเริ่มต้นสำหรับสคริปต์ทุบตีอื่นๆ เทมเพลตจะประกอบด้วยสิ่งอำนวยความสะดวกของวิธีใช้ คำชี้แจงสิทธิ์การใช้งาน ฟังก์ชันง่ายๆ จำนวนหนึ่ง และตรรกะบางอย่างเพื่อจัดการกับตัวเลือกเหล่านั้นและอื่นๆ ที่อาจจำเป็นสำหรับสคริปต์ที่จะอิงตามเทมเพลตนี้

ทำไมต้องสร้างเทมเพลต

เช่นเดียวกับระบบอัตโนมัติโดยทั่วไป แนวคิดเบื้องหลังการสร้างเทมเพลตคือการเป็น "ผู้ดูแลระบบที่ขี้เกียจ" เทมเพลตประกอบด้วยส่วนประกอบพื้นฐานที่คุณต้องการในสคริปต์ทั้งหมดของคุณ ประหยัดเวลาเมื่อเทียบกับการเพิ่มองค์ประกอบเหล่านั้นลงในสคริปต์ใหม่ทุกรายการ และทำให้ง่ายต่อการเริ่มสคริปต์ใหม่

แม้ว่าการใส่คำสั่ง Bash ของบรรทัดคำสั่งบางคำสั่งเข้าด้วยกันเป็นไฟล์และทำให้สามารถเรียกใช้งานได้อาจเป็นเรื่องที่น่าดึงดูดใจ แต่ก็สามารถต่อต้านได้ในระยะยาว โปรแกรม Bash ที่เขียนมาอย่างดีและมีความคิดเห็นดีพร้อมความช่วยเหลือและความสามารถในการยอมรับตัวเลือกบรรทัดคำสั่งเป็นจุดเริ่มต้นที่ดีสำหรับผู้ดูแลระบบที่ดูแลโปรแกรม ซึ่งรวมถึงโปรแกรมที่ คุณ เขียนและบำรุงรักษา

ข้อกำหนด

คุณควรสร้างชุดข้อกำหนดสำหรับทุกโครงการที่คุณทำเสมอ ซึ่งรวมถึงสคริปต์ แม้ว่าจะเป็นรายการง่ายๆ ที่มีเพียงสองหรือสามรายการเท่านั้น ฉันเคยมีส่วนร่วมในหลายโครงการที่ล้มเหลวโดยสิ้นเชิงหรือไม่สามารถตอบสนองความต้องการของลูกค้าได้ โดยปกติแล้วจะเนื่องมาจากไม่มีข้อกำหนดหรือข้อเขียนที่ไม่ค่อยดี

ข้อกำหนดสำหรับเทมเพลต Bash นี้ค่อนข้างง่าย:

  1. สร้างเทมเพลตที่สามารถใช้เป็นจุดเริ่มต้นสำหรับโครงการการเขียนโปรแกรม Bash ในอนาคต
  2. เทมเพลตควรเป็นไปตามแนวทางปฏิบัติในการเขียนโปรแกรม Bash มาตรฐาน
  3. ต้องมี:
    • ส่วนหัวที่สามารถใช้เพื่ออธิบายการทำงานของโปรแกรมและบันทึกการเปลี่ยนแปลง
    • คำชี้แจงสิทธิ์การใช้งาน
    • ส่วนการทำงาน
    • ฟังก์ชันช่วยเหลือ
    • ฟังก์ชันสำหรับทดสอบว่าผู้ใช้โปรแกรมเป็น root หรือไม่
    • วิธีการประเมินตัวเลือกบรรทัดคำสั่ง

โครงสร้างพื้นฐาน

สคริปต์ทุบตีพื้นฐานมีสามส่วน Bash ไม่มีวิธีกำหนดส่วนต่าง ๆ แต่ขอบเขตระหว่างส่วนนั้นมีความชัดเจน

  • สคริปต์ทั้งหมดต้องขึ้นต้นด้วย shebang (#! ) และนี่จะต้องเป็นบรรทัดแรกในโปรแกรม Bash ใดๆ
  • ส่วนฟังก์ชันต้องเริ่มหลัง shebang และก่อนเนื้อความของโปรแกรม เพื่อเป็นส่วนหนึ่งของความต้องการของฉันในการจัดทำเอกสารทุกอย่าง ฉันแสดงความคิดเห็นก่อนแต่ละฟังก์ชันพร้อมคำอธิบายสั้นๆ เกี่ยวกับสิ่งที่ตั้งใจจะทำ ฉันยังรวมความคิดเห็นไว้ในฟังก์ชันเพื่ออธิบายเพิ่มเติม โปรแกรมสั้นๆ ง่ายๆ อาจไม่ต้องการฟังก์ชัน
  • ส่วนหลักของโปรแกรมจะอยู่หลังส่วนฟังก์ชัน นี่อาจเป็นคำสั่ง Bash เดียวหรือหลายพันบรรทัด หนึ่งในโปรแกรมของฉันมีโค้ดน้อยกว่า 200 บรรทัดโดยไม่นับความคิดเห็น โปรแกรมเดียวกันนั้นมีความคิดเห็นมากกว่า 600 บรรทัด

นั่นคือทั้งหมดที่มี—เพียงสามส่วนในโครงสร้างของโปรแกรม Bash ใดๆ

ความคิดเห็นชั้นนำ

ฉันมักจะเพิ่มมากกว่านี้ด้วยเหตุผลหลายประการ อันดับแรก ฉันเพิ่มความคิดเห็นสองสามส่วนทันทีหลังจาก shebang ส่วนความคิดเห็นเหล่านี้เป็นทางเลือก แต่ฉันพบว่ามีประโยชน์มาก

ส่วนความคิดเห็นแรกคือชื่อโปรแกรมและคำอธิบายและประวัติการเปลี่ยนแปลง ฉันเรียนรู้รูปแบบนี้ขณะทำงานที่ IBM และมีวิธีการบันทึกการพัฒนาโปรแกรมในระยะยาวและการแก้ไขใดๆ ที่ใช้กับรูปแบบนี้ นี่เป็นจุดเริ่มต้นสำคัญในการจัดทำเอกสารโปรแกรมของคุณ

ส่วนความคิดเห็นที่สองคือคำชี้แจงลิขสิทธิ์และใบอนุญาต ฉันใช้ GPLv2 และดูเหมือนว่าจะเป็นคำสั่งมาตรฐานสำหรับโปรแกรมที่ได้รับอนุญาตภายใต้ GPLv2 หากคุณใช้ใบอนุญาตโอเพ่นซอร์สอื่น ไม่เป็นไร แต่ฉันขอแนะนำให้เพิ่มคำสั่งที่ชัดเจนในโค้ดเพื่อขจัดความสับสนที่อาจเกิดขึ้นเกี่ยวกับการให้สิทธิ์ใช้งาน บทความของ Scott Peterson ซอร์สโค้ดคือใบอนุญาต ช่วยอธิบายเหตุผลเบื้องหลังสิ่งนี้

ตอนนี้สคริปต์มีลักษณะดังนี้:

#!/bin/bash
################################################################################
#                              scriptTemplate                                  #
#                                                                              #
# Use this template as the beginning of a new program. Place a short           #
# description of the script here.                                              #
#                                                                              #
# Change History                                                               #
# 11/11/2019  David Both    Original code. This is a template for creating     #
#                           new Bash shell scripts.                            #
#                           Add new history entries as needed.                 #
#                                                                              #
#                                                                              #
################################################################################
################################################################################
################################################################################
#                                                                              #
#  Copyright (C) 2007, 2019 David Both                                         #
#  [email protected]                                                        #
#                                                                              #
#  This program is free software; you can redistribute it and/or modify        #
#  it under the terms of the GNU General Public License as published by        #
#  the Free Software Foundation; either version 2 of the License, or           #
#  (at your option) any later version.                                         #
#                                                                              #
#  This program is distributed in the hope that it will be useful,             #
#  but WITHOUT ANY WARRANTY; without even the implied warranty of              #
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
#  GNU General Public License for more details.                                #
#                                                                              #
#  You should have received a copy of the GNU General Public License           #
#  along with this program; if not, write to the Free Software                 #
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA   #
#                                                                              #
################################################################################
################################################################################
################################################################################

echo "hello world!"

เรียกใช้โปรแกรมที่แก้ไขแล้วเพื่อตรวจสอบว่ายังใช้งานได้ตามที่คาดไว้

เกี่ยวกับการทดสอบ

ตอนนี้เป็นเวลาที่ดีที่จะพูดคุยเกี่ยวกับการทดสอบ

"ยังมีจุดบกพร่องอีกตัวอยู่เสมอ"

— กฎกีฏวิทยาไซเบอร์เนติกของลูบาร์สกี้

ลูบาร์สกี้—ใครก็ตาม— ถูกต้อง คุณจะไม่พบข้อบกพร่องทั้งหมดในโค้ดของคุณ สำหรับทุกจุดบกพร่องที่ฉันพบ ดูเหมือนว่าจะมีจุดบกพร่องอื่นๆ เกิดขึ้นเสมอ ซึ่งมักจะเกิดขึ้นในช่วงเวลาที่ไม่เหมาะสมอย่างยิ่ง

การทดสอบไม่ได้เป็นเพียงเกี่ยวกับโปรแกรมเท่านั้น นอกจากนี้ยังเกี่ยวกับการตรวจสอบด้วยว่าปัญหา ไม่ว่าจะเกิดจากฮาร์ดแวร์ ซอฟต์แวร์ หรือวิธีที่ผู้ใช้ค้นหาเพื่อทำลายสิ่งต่างๆ อย่างไม่มีที่สิ้นสุด ซึ่งน่าจะได้รับการแก้ไขแล้วจริงๆ สิ่งที่สำคัญไม่แพ้กัน การทดสอบก็คือการทำให้มั่นใจว่าโค้ดนั้นใช้งานง่ายและอินเทอร์เฟซนั้นเหมาะสมกับผู้ใช้

การปฏิบัติตามกระบวนการที่กำหนดไว้อย่างดีเมื่อเขียนและทดสอบเชลล์สคริปต์สามารถนำไปสู่ผลลัพธ์ที่สม่ำเสมอและมีคุณภาพสูง ขั้นตอนของฉันง่าย:

  1. สร้างแผนการทดสอบอย่างง่าย
  2. เริ่มการทดสอบตั้งแต่เริ่มต้นการพัฒนา
  3. ทำการทดสอบขั้นสุดท้ายเมื่อโค้ดเสร็จสมบูรณ์
  4. ย้ายไปใช้งานจริงและทดสอบเพิ่มเติม

แผนการทดสอบ

มีรูปแบบต่างๆ มากมายสำหรับแผนการทดสอบ ฉันได้ทำงานอย่างเต็มที่ตั้งแต่มีทุกอย่างอยู่ในหัวของฉัน โน้ตสองสามตัวที่จดไว้บนกระดาษ และไปจนถึงชุดแบบฟอร์มที่ซับซ้อนซึ่งต้องการคำอธิบายโดยละเอียดของการทดสอบแต่ละรายการ รหัสการทำงานใดที่จะทดสอบ สิ่งที่การทดสอบจะทำได้สำเร็จ และสิ่งที่ป้อนข้อมูลและผลลัพธ์ควรเป็นอย่างไร

การพูดในฐานะผู้ดูแลระบบที่เคยเป็นผู้ทดสอบ (แต่ไม่ใช่ตอนนี้) ฉันพยายามใช้พื้นที่ตรงกลาง การมีแผนการทดสอบข้อเขียนสั้นๆ อย่างน้อยจะช่วยให้มั่นใจได้ถึงความสม่ำเสมอจากการทดสอบหนึ่งครั้งไปยังครั้งต่อไป รายละเอียดที่คุณต้องการขึ้นอยู่กับว่าการพัฒนาและการทดสอบของคุณเป็นทางการเพียงใด

ตัวอย่างเอกสารแผนการทดสอบที่ฉันพบโดยใช้ Google นั้นซับซ้อนและมีไว้สำหรับองค์กรขนาดใหญ่ที่มีกระบวนการพัฒนาและทดสอบที่เป็นทางการมาก แม้ว่าแผนการทดสอบเหล่านั้นจะดีสำหรับผู้ที่มี "การทดสอบ" ในตำแหน่งงาน แต่ก็ใช้ไม่ได้กับสภาพการทำงานที่วุ่นวายและขึ้นอยู่กับเวลาของผู้ดูแลระบบ เช่นเดียวกับงานด้านอื่นๆ ส่วนใหญ่ ผู้ดูแลระบบจำเป็นต้องมีความคิดสร้างสรรค์ ต่อไปนี้คือรายการสั้นๆ ที่ควรพิจารณารวมถึงในแผนการทดสอบของคุณ ปรับเปลี่ยนให้เหมาะกับความต้องการของคุณ:

  • ชื่อและคำอธิบายสั้นๆ ของซอฟต์แวร์ที่กำลังทดสอบ
  • คำอธิบายคุณลักษณะซอฟต์แวร์ที่จะทดสอบ
  • เงื่อนไขเริ่มต้นสำหรับการทดสอบแต่ละครั้ง
  • หน้าที่ที่ต้องติดตามสำหรับการทดสอบแต่ละครั้ง
  • คำอธิบายผลลัพธ์ที่ต้องการสำหรับการทดสอบแต่ละครั้ง
  • การทดสอบเฉพาะที่ออกแบบมาเพื่อทดสอบผลลัพธ์เชิงลบ
  • ทดสอบวิธีที่โปรแกรมจัดการกับอินพุตที่ไม่คาดคิด
  • คำอธิบายที่ชัดเจนของสิ่งที่ถือว่าผ่านหรือล้มเหลวสำหรับการทดสอบแต่ละครั้ง
  • การทดสอบที่คลุมเครือ ซึ่งอธิบายไว้ด้านล่าง

รายการนี้ควรให้แนวคิดบางประการในการสร้างแผนการทดสอบของคุณ ผู้ดูแลระบบส่วนใหญ่ควรรักษาความเรียบง่ายและไม่เป็นทางการ

ทดสอบแต่เนิ่นๆ—ทดสอบบ่อยๆ

ฉันเริ่มทดสอบเชลล์สคริปต์ของฉันเสมอทันทีที่ฉันทำส่วนแรกที่ทำงานได้สำเร็จ สิ่งนี้เป็นจริงไม่ว่าฉันจะเขียนโปรแกรมบรรทัดคำสั่งสั้นๆ หรือสคริปต์ที่เป็นไฟล์ปฏิบัติการ

ฉันมักจะเริ่มสร้างโปรแกรมใหม่ด้วยเทมเพลตเชลล์สคริปต์ ฉันเขียนโค้ดสำหรับฟังก์ชัน Help และทดสอบ ซึ่งมักจะเป็นส่วนเล็กๆ น้อยๆ ของกระบวนการนี้ แต่ช่วยให้ฉันเริ่มต้นได้ และทำให้แน่ใจได้ว่าสิ่งต่างๆ ในเทมเพลตทำงานอย่างถูกต้องตั้งแต่เริ่มแรก ณ จุดนี้ ง่ายต่อการแก้ไขปัญหาเกี่ยวกับส่วนเทมเพลตของสคริปต์หรือแก้ไขให้ตรงตามความต้องการที่เทมเพลตมาตรฐานไม่ทำ

เมื่อเทมเพลตและฟังก์ชัน Help ใช้งานได้แล้ว ฉันจะไปยังการสร้างเนื้อความของโปรแกรมโดยเพิ่มความคิดเห็นเพื่อจัดทำเอกสารขั้นตอนการเขียนโปรแกรมที่จำเป็นเพื่อให้เป็นไปตามข้อกำหนดของโปรแกรม ตอนนี้ฉันเริ่มเพิ่มโค้ดเพื่อให้เป็นไปตามข้อกำหนดที่ระบุไว้ในแต่ละความคิดเห็น โค้ดนี้อาจจำเป็นต้องเพิ่มตัวแปรที่เริ่มต้นในส่วนนั้นของเทมเพลต ซึ่งตอนนี้กำลังกลายเป็นเชลล์สคริปต์

นี่คือจุดที่การทดสอบเป็นมากกว่าแค่การป้อนข้อมูลและการตรวจสอบผลลัพธ์ ต้องใช้การทำงานพิเศษเล็กน้อย บางครั้งฉันเพิ่มคำสั่งที่พิมพ์ผลลัพธ์กลางของรหัสที่ฉันเพิ่งเขียนและตรวจสอบว่า สำหรับสคริปต์ที่ซับซ้อนกว่านี้ ฉันเพิ่ม -t ตัวเลือกสำหรับ "โหมดทดสอบ" ในกรณีนี้ รหัสทดสอบภายในจะทำงานก็ต่อเมื่อ -t ป้อนตัวเลือกในบรรทัดคำสั่ง

การทดสอบครั้งสุดท้าย

หลังจากที่โค้ดเสร็จสมบูรณ์ ฉันกลับไปทำการทดสอบคุณลักษณะและฟังก์ชันทั้งหมดโดยใช้อินพุตที่รู้จักเพื่อสร้างเอาต์พุตเฉพาะ ฉันยังทดสอบอินพุตแบบสุ่มเพื่อดูว่าโปรแกรมสามารถจัดการกับอินพุตที่ไม่คาดคิดได้หรือไม่

การทดสอบขั้นสุดท้ายมีจุดประสงค์เพื่อตรวจสอบว่าโปรแกรมทำงานตามหลักที่ตั้งใจไว้ ส่วนใหญ่ของการทดสอบขั้นสุดท้ายคือการทำให้แน่ใจว่าฟังก์ชันที่ทำงานก่อนหน้านี้ในวงจรการพัฒนาจะไม่ถูกทำลายโดยโค้ดที่เพิ่มหรือเปลี่ยนแปลงในภายหลังของวงจร

หากคุณได้ทดสอบสคริปต์ขณะที่คุณเพิ่มโค้ดใหม่เข้าไป คุณอาจคิดว่าไม่ควรมีเซอร์ไพรส์ใดๆ ในระหว่างการทดสอบครั้งสุดท้าย ผิด! มีเซอร์ไพรส์อยู่เสมอระหว่างการทดสอบขั้นสุดท้าย เสมอ. คาดหวังความประหลาดใจเหล่านั้นและพร้อมที่จะใช้เวลาแก้ไข หากไม่มีข้อบกพร่องใด ๆ ที่ค้นพบระหว่างการทดสอบขั้นสุดท้าย ก็ไม่มีประโยชน์ที่จะทำการทดสอบขั้นสุดท้ายเลยใช่หรือไม่

การทดสอบในการผลิต

ห๊ะ—อะไรนะ

"จนกว่าจะมีการผลิตโปรแกรมอย่างน้อยหกเดือน ข้อผิดพลาดที่อันตรายที่สุดจะถูกค้นพบ"

— สมมุติฐานการเขียนโปรแกรมของ Troutman

ใช่ ตอนนี้การทดสอบในการผลิตถือว่าเป็นเรื่องปกติและเป็นที่น่าพอใจ จากการเป็นผู้ทดสอบด้วยตัวเองแล้ว เรื่องนี้ก็ดูสมเหตุสมผล "แต่เดี๋ยวก่อน! มันอันตราย" คุณพูด ประสบการณ์ของฉันคือไม่มีอันตรายมากไปกว่าการทดสอบอย่างละเอียดและเข้มงวดในสภาพแวดล้อมการทดสอบเฉพาะ ในบางกรณี ไม่มีทางเลือกเพราะไม่มีสภาพแวดล้อมการทดสอบ—เฉพาะการผลิตเท่านั้น

ผู้ดูแลระบบไม่ใช่คนแปลกหน้าสำหรับความจำเป็นในการทดสอบสคริปต์ใหม่หรือสคริปต์ที่แก้ไขในการผลิต เมื่อใดก็ตามที่สคริปต์ถูกย้ายไปสู่การผลิต นั่นจะกลายเป็นบททดสอบขั้นสุดท้าย สภาพแวดล้อมการผลิตถือเป็นส่วนที่สำคัญที่สุดของการทดสอบนั้น ไม่มีสิ่งใดที่ผู้ทดสอบสามารถฝันถึงในสภาพแวดล้อมการทดสอบที่สามารถจำลองสภาพแวดล้อมการผลิตที่แท้จริงได้อย่างเต็มที่

แนวปฏิบัติการทดสอบแบบใหม่ที่ถูกกล่าวหาในการผลิตเป็นเพียงการรับรู้ถึงสิ่งที่ผู้ดูแลระบบรู้จักมาโดยตลอด การทดสอบที่ดีที่สุดคือการผลิต ตราบใดที่ไม่ใช่การทดสอบเพียงอย่างเดียว

การทดสอบแบบคลุมเครือ

นี่เป็นอีกคำศัพท์หนึ่งที่ทำให้ฉันต้องกลอกตา ความหมายที่สำคัญของมันคือความเรียบง่าย:ให้ใครซักคนมากดแป้นจนกว่าจะมีบางอย่างเกิดขึ้น และดูว่าโปรแกรมจะจัดการกับมันได้ดีเพียงใด แต่มันมีอะไรมากกว่านั้นจริงๆ

การทดสอบแบบคลุมเครือนั้นเหมือนกับเวลาที่ลูกชายของฉันถอดรหัสเกมในเวลาไม่ถึงนาทีด้วยการสุ่มอินพุต นั่นเป็นการสิ้นสุดความพยายามของฉันในการเขียนเกมให้เขา

แผนการทดสอบส่วนใหญ่ใช้อินพุตที่เฉพาะเจาะจงมากซึ่งสร้างผลลัพธ์หรือผลลัพธ์ที่เฉพาะเจาะจง ไม่ว่าการทดสอบจะกำหนดผลลัพธ์ที่เป็นบวกหรือลบว่าเป็นความสำเร็จ การทดสอบก็ยังคงถูกควบคุม และอินพุตและผลลัพธ์จะถูกระบุและคาดหวัง เช่น ข้อความแสดงข้อผิดพลาดเฉพาะสำหรับโหมดความล้มเหลวเฉพาะ

การทดสอบแบบคลุมเครือเป็นเรื่องเกี่ยวกับการจัดการกับการสุ่มในทุกแง่มุมของการทดสอบ เช่น เงื่อนไขการเริ่มต้น การป้อนข้อมูลแบบสุ่มมากและไม่คาดคิด การเลือกชุดค่าผสมแบบสุ่ม หน่วยความจำต่ำ CPU ระดับสูงที่แข่งขันกับโปรแกรมอื่น อินสแตนซ์หลายรายการของโปรแกรมที่อยู่ระหว่างการทดสอบ และเงื่อนไขสุ่มอื่นๆ ที่คุณคิดได้เพื่อใช้กับการทดสอบ

ฉันพยายามทำการทดสอบที่คลุมเครือตั้งแต่ต้น หากสคริปต์ทุบตีไม่สามารถจัดการกับการสุ่มที่มีนัยสำคัญในช่วงแรกๆ ของมัน ก็ไม่น่าจะดีขึ้นเมื่อคุณเพิ่มโค้ดเพิ่มเติม นี่เป็นเวลาที่ดีในการตรวจจับปัญหาเหล่านี้และแก้ไขปัญหาในขณะที่โค้ดค่อนข้างง่าย การทดสอบที่คลุมเครือเล็กน้อยในแต่ละขั้นตอนยังมีประโยชน์ในการค้นหาปัญหาก่อนที่จะถูกปิดบังด้วยโค้ดเพิ่มเติม

หลังจากเขียนโค้ดเสร็จแล้ว ฉันชอบทำการทดสอบแบบคลุมเครือมากกว่านี้ ทำการทดสอบที่คลุมเครืออยู่เสมอ ฉันรู้สึกประหลาดใจกับผลลัพธ์บางอย่างอย่างแน่นอน การทดสอบสิ่งที่คาดหวังเป็นเรื่องง่าย แต่ผู้ใช้มักไม่ทำสิ่งที่คาดหวังด้วยสคริปต์

ตัวอย่างสถานที่ท่องเที่ยวที่กำลังมา

บทความนี้ประสบความสำเร็จเพียงเล็กน้อยในการสร้างเทมเพลต แต่ส่วนใหญ่พูดถึงการทดสอบ เนื่องจากการทดสอบเป็นส่วนสำคัญในการสร้างโปรแกรมทุกประเภท ในบทความถัดไปในชุดนี้ คุณจะเพิ่มฟังก์ชันความช่วยเหลือพื้นฐานพร้อมกับโค้ดบางส่วนเพื่อตรวจหาและดำเนินการกับตัวเลือกต่างๆ เช่น -h ไปยังเทมเพลตสคริปต์ทุบตีของคุณ

ทรัพยากร

  • วิธีตั้งโปรแกรมด้วย Bash:ไวยากรณ์และเครื่องมือ
  • วิธีตั้งโปรแกรมด้วย Bash:ตัวดำเนินการเชิงตรรกะและการขยายเชลล์
  • วิธีตั้งโปรแกรมด้วย Bash:Loops

    บทความชุดนี้มีเนื้อหาบางส่วนมาจากเล่มที่ 2 บทที่ 10 ของหลักสูตรการเรียนรู้ด้วยตนเองเกี่ยวกับ Linux แบบสามส่วนของ David Both การใช้งานและการดูแลระบบ Linux—Zero to SysAdmin