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

10 เคล็ดลับที่เป็นประโยชน์สำหรับการเขียนสคริปต์ทุบตีที่มีประสิทธิภาพใน Linux

การเขียนสคริปต์เชลล์เป็นรูปแบบการเขียนโปรแกรมที่ง่ายที่สุดที่คุณสามารถเรียนรู้/ทำใน 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
10 เคล็ดลับที่เป็นประโยชน์สำหรับการเขียนสคริปต์ทุบตีที่มีประสิทธิภาพใน Linux

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. ทำการดีบักสำหรับสคริปต์แบบยาวเสมอ

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

  1. วิธีเปิดใช้งานโหมดดีบักเชลล์สคริปต์ใน Linux
  2. วิธีดำเนินการตรวจสอบไวยากรณ์โหมดดีบักในเชลล์สคริปต์
  3. วิธีการติดตามการดำเนินการคำสั่งในเชลล์สคริปต์ด้วยการติดตามเชลล์

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