BASH shell script
จริงเหรอ BASH shell script ช่วยทำให้ชีวิตเราง่ายขึ้น ?
เคยไม๊ ที่ต้องดูแล computer จำนวนหลายร้อยตัว แล้วต้องการเช็กว่า computer แต่ละตัวมันขอเทียบเวลากับ upper stratum ตัวไหนบ้าง และ upper stratum ที่มันขอเทียบเวลามันมีตัวสำรองให้ใช้งานด้วยไม๊ อาจต้องใช้เวลาเกือบสัปดาห์กว่าจะได้ข้อมูลและเก็บบันทึกได้ครบถ้วน และถ้าจำเป็นที่จะต้องตรวจเช็กทุกสัปดาห์ หรือทุกวันละก็ ต้องมีบาดเจ็บล้มหมอนนอนเสื่อกันบ้างแหละ
เมื่อความขยันไม่ใช่หนทางสู่ความสำเร็จ
“I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.” - Bill Gates.
เริ่มกันยังไงกับ BASH shell script ?
ยากมาก ก.ไก่พันล้านตัว เคยได้ยินกันปะ "มันง่ายนิดเดียว" ใช่ครับ ง่ายนิดเดียว ยากเยอะ 555+
อย่างแรกเลย ต้องเข้าใจและเรียกใช้งานคำสั่ง BASH command เป็น คือต้องรู้ว่าจะต้องใช้ argument อะไรเพิ่มเติมเพื่อให้ได้ output ที่ต้องการ ต้องเข้าใจการทำงานของ Operating System หรือ OS ต้องรู้จักโครงสร้างของ file และ directory รวมถึง user / group ownership และ permissions , ต้องรู้จัก process ID และที่สำคัญ ต้องใช้ editor เป็น พอถึงจุดนี้ บางคนขำกลิ้ง ในหลายๆ environment มันไม่ได้มี editor เทพๆแบบ VScode ให้ใช้งาน ส่วนใหญ่จะมี vim หรือ vi ให้ใช้ นอกจากความรู้พื้นฐานเหล่านี้แล้ว System Architecture ก็เป็นส่วนสำคัญส่วนหนึ่งที่ทำให้เราสามารถออกแบบ shell script ให้สามารถทำงานได้อย่างมีประสิทธิภาพตามวัตถุประสงค์ที่ต้องการ
พอมีความรู้ที่กล่าวมาระดับนึงแล้ว ก็เอาความรู้เหล่านั้นมาประกอบเข้าด้วยกันให้เป็น shell script โดยจะต้องเรียนรู้ syntax หรือรูปแบบของ BASH Programming เช่น การกำหนดค่าตัวแปล การใช้งาน if then else, case, for loop, while loop, การอ่านเขียนข้อมูลจากไฟล์, การตรวจสอบ exit code เป็นต้น
ก่อนที่จะเริ่มเขียน BASH shell script เราควรจะทราบวัตถุประสงค์ของ shell script ที่จะเขียน จะให้มันทำงานอะไร ตัว script ต้องการ RAW data อะไรบ้าง มีวิธีการประมวลผลอย่างไร และต้องการ output ออกไปในลักษณะรูปแบบไหนเช่น ออกที่หน้าจอ เขียนลงไฟล์ หรือทั้งสองอย่าง สิ่งต่างๆเหล่านี้ควรที่จะต้องออกแบบให้เสร็จก่อนที่ลงมือเขียน shell script
shell script ที่เขียน มาอาจมีสิ่งที่เรียกว่า "bug" หรือข้อผิดพลาดของ software ซึ่งอาจเกิดจากข้อมูล RAW data ไม่ครบถ้วน หรือวิธีการ process ข้อมูลในบาง condition ไม่สามารถทำได้ syntax programming ผิด บลาๆๆ ดังนั้นผู้เขียน shell script จะต้องรู้วิธีการ "debug" หรือวิธีการวาง trap เพื่อตรวจสอบ data flow และ/หรือการทำงานของ shell script ว่าสามารถทำตามเงื่อนไขที่กำหนดได้ถูกต้องหรือไม่