การเขียนสคริปต์เชลล์เป็นรูปแบบการเขียนโปรแกรมที่ง่ายที่สุดที่คุณสามารถเรียนรู้/ทำใน 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
- วิธีดำเนินการตรวจสอบไวยากรณ์โหมดดีบักในเชลล์สคริปต์
- วิธีการติดตามการดำเนินการคำสั่งในเชลล์สคริปต์ด้วยการติดตามเชลล์
นั่นคือทั้งหมด! คุณมีแนวทางปฏิบัติที่ดีที่สุดในการเขียนสคริปต์ทุบตีอื่น ๆ ที่จะแบ่งปันหรือไม่? ถ้าใช่ ให้ใช้แบบฟอร์มความคิดเห็นด้านล่างเพื่อดำเนินการดังกล่าว