การเขียนสคริปต์เชลล์เป็นรูปแบบการเขียนโปรแกรมที่ง่ายที่สุดที่คุณสามารถเรียนรู้/ทำใน Linux ยิ่งไปกว่านั้น ยังเป็นทักษะที่จำเป็นสำหรับการดูแลระบบสำหรับงานอัตโนมัติ การพัฒนายูทิลิตี้/เครื่องมืออย่างง่ายใหม่ ๆ ที่จะกล่าวถึงเพียงไม่กี่อย่าง
ในบทความนี้ เราจะแบ่งปัน 10 เคล็ดลับที่เป็นประโยชน์และเป็นประโยชน์สำหรับการเขียนสคริปต์ทุบตีที่มีประสิทธิภาพและเชื่อถือได้ รวมถึง:
1. ใช้ความคิดเห็นในสคริปต์เสมอ
นี่เป็นแนวทางปฏิบัติที่แนะนำซึ่งไม่เพียงแค่นำไปใช้กับเชลล์สคริปต์เท่านั้น แต่ใช้กับการเขียนโปรแกรมประเภทอื่นๆ ทั้งหมดด้วย การเขียนความคิดเห็นในสคริปต์ช่วยให้คุณหรือคนอื่นที่อ่านสคริปต์ของคุณเข้าใจการทำงานของส่วนต่างๆ ของสคริปต์
สำหรับผู้เริ่มต้น ความคิดเห็นถูกกำหนดโดยใช้ #
ลงชื่อ
#TecMint is the best site for all kind of Linux articles
2. ทำให้สคริปต์ออกเมื่อล้มเหลว
บางครั้ง bash อาจยังคงรันสคริปต์ต่อไปแม้ว่าคำสั่งบางคำสั่งจะล้มเหลว ซึ่งส่งผลต่อส่วนที่เหลือของสคริปต์ (อาจส่งผลให้เกิดข้อผิดพลาดทางตรรกะในที่สุด) ใช้บรรทัดด้านล่างเพื่อออกจากสคริปต์เมื่อคำสั่งล้มเหลว:
#let script exit if a command fails set -o errexit OR set -e
3. ทำให้สคริปต์ออกเมื่อ Bash ใช้ตัวแปรที่ไม่ได้ประกาศ
Bash อาจพยายามใช้สคริปต์ที่ไม่ได้ประกาศซึ่งอาจทำให้เกิดข้อผิดพลาดทางตรรกะ ดังนั้นให้ใช้บรรทัดต่อไปนี้เพื่อสั่งให้ bash ออกจากสคริปต์เมื่อพยายามใช้ตัวแปรที่ไม่ได้ประกาศ:
#let script exit if an unsed variable is used set -o nounset OR set -u
4. ใช้เครื่องหมายอัญประกาศคู่เพื่ออ้างอิงตัวแปร
การใช้เครื่องหมายอัญประกาศคู่ขณะอ้างอิง (โดยใช้ค่าของตัวแปร) ช่วยป้องกันการแยกคำ (เกี่ยวกับช่องว่าง) และการวนซ้ำที่ไม่จำเป็น (การจดจำและขยายสัญลักษณ์แทน)
ดูตัวอย่างด้านล่าง:
#!/bin/bash #let script exit if a command fails set -o errexit #let script exit if an unsed variable is used set -o nounset echo "Names without double quotes" echo names="Tecmint FOSSMint Linusay" for name in $names; do echo "$name" done echo echo "Names with double quotes" echo for name in "$names"; do echo "$name" done exit 0
บันทึกไฟล์และออก จากนั้นเรียกใช้ดังนี้:
$ ./names.sh
5. ใช้ฟังก์ชันในสคริปต์
ยกเว้นสคริปต์ขนาดเล็กมาก (ที่มีโค้ดไม่กี่บรรทัด) อย่าลืมใช้ฟังก์ชันเพื่อทำให้โค้ดของคุณเป็นแบบโมดูลาร์ และทำให้สคริปต์สามารถอ่านและนำกลับมาใช้ใหม่ได้มากขึ้น
ไวยากรณ์สำหรับฟังก์ชันการเขียนมีดังนี้:
function check_root(){ command1; command2; } OR check_root(){ command1; command2; }
สำหรับโค้ดบรรทัดเดียว ให้ใช้อักขระสิ้นสุดหลังจากแต่ละคำสั่งดังนี้:
check_root(){ command1; command2; }
6. ใช้ =แทน ==สำหรับการเปรียบเทียบสตริง
โปรดทราบว่า ==
เป็นคำพ้องความหมายสำหรับ =
ดังนั้นจึงใช้ =
. เพียงตัวเดียว สำหรับการเปรียบเทียบสตริง เช่น:
value1=”tecmint.com” value2=”fossmint.com” if [ "$value1" = "$value2" ]
7. ใช้ $(command) แทน 'command' เดิมสำหรับการทดแทน
การแทนที่คำสั่งแทนที่คำสั่งด้วยเอาต์พุต ใช้ $(command)
แทนที่จะเป็น backquotes `command`
สำหรับการทดแทนคำสั่ง
สิ่งนี้ได้รับการแนะนำโดยเครื่องมือ shellcheck (แสดงคำเตือนและคำแนะนำสำหรับเชลล์สคริปต์) ตัวอย่างเช่น:
user=`echo “$UID”` user=$(echo “$UID”)
8. ใช้อ่านอย่างเดียวเพื่อประกาศตัวแปรคงที่
ตัวแปรคงที่ไม่เปลี่ยนแปลง เมื่อกำหนดไว้ในสคริปต์แล้วจะไม่สามารถเปลี่ยนแปลงค่าได้:
readonly passwd_file=”/etc/passwd” readonly group_file=”/etc/group”
9. ใช้ชื่อตัวพิมพ์ใหญ่สำหรับตัวแปรสภาพแวดล้อมและตัวพิมพ์เล็กสำหรับตัวแปรที่กำหนดเอง
ตัวแปรสภาพแวดล้อม bash ทั้งหมดตั้งชื่อด้วยอักษรตัวพิมพ์ใหญ่ ดังนั้น ให้ใช้อักษรตัวพิมพ์เล็กเพื่อตั้งชื่อตัวแปรที่กำหนดเองของคุณ เพื่อหลีกเลี่ยงความขัดแย้งของชื่อตัวแปร:
#define custom variables using lowercase and use uppercase for env variables nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl” perl “$nikto_file” -h “$1”
10. ทำการดีบักสำหรับสคริปต์แบบยาวเสมอ
หากคุณกำลังเขียนสคริปต์ทุบตีด้วยโค้ดหลายพันบรรทัด การค้นหาข้อผิดพลาดอาจกลายเป็นฝันร้าย หากต้องการแก้ไขสิ่งต่าง ๆ อย่างง่ายดายก่อนเรียกใช้สคริปต์ ให้ทำการดีบั๊ก ฝึกฝนเคล็ดลับนี้โดยอ่านคำแนะนำด้านล่าง:
- วิธีเปิดใช้งานโหมดดีบักเชลล์สคริปต์ใน Linux
- วิธีดำเนินการตรวจสอบไวยากรณ์โหมดดีบักในเชลล์สคริปต์
- วิธีการติดตามการดำเนินการคำสั่งในเชลล์สคริปต์ด้วยการติดตามเชลล์
นั่นคือทั้งหมด! คุณมีแนวทางปฏิบัติที่ดีที่สุดในการเขียนสคริปต์ทุบตีอื่น ๆ ที่จะแบ่งปันหรือไม่? ถ้าใช่ ให้ใช้แบบฟอร์มความคิดเห็นด้านล่างเพื่อดำเนินการดังกล่าว