5 ตัวอย่างสคริปต์ Bash เพื่อช่วยให้คุณเรียนรู้การเขียนโปรแกรม Linux
ลิงค์ด่วน
⭐ วิธีพิมพ์ Hello World ใน Bash
⭐สร้างไดเร็กทอรีโดยการอ่านอินพุต
⭐สร้างไดเร็กทอรีโดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง
⭐ ลบไฟล์โดยใช้ฟังก์ชัน Bash
⭐สร้างเครื่องคิดเลขพื้นฐานสำหรับการคำนวณทางคณิตศาสตร์
การเขียนสคริปต์ Bash เป็นวิธีที่แพร่หลายและเข้าถึงได้ง่ายซึ่งผู้ใช้สามารถตั้งโปรแกรมอุปกรณ์คอมพิวเตอร์บน Linux ได้ การจัดหาตัวอย่างสคริปต์พื้นฐานจะช่วยให้เข้าใจกระบวนการพื้นฐานและให้ข้อมูลเบื้องต้นเกี่ยวกับหลักการพื้นฐานของการเขียนโปรแกรม Bash
วิธีพิมพ์ Hello World ใน Bash
แท้จริงแล้ว การสาธิต"Hello World"ที่ได้รับการยกย่องถือเป็นการแนะนำที่ยอดเยี่ยมเกี่ยวกับความซับซ้อนของภาษาการเขียนโค้ดใดๆ รวมถึงภาษาสคริปต์ Bash ที่ได้รับการยกย่องด้วย
ในการสร้างเอาต์พุตที่สวยงามใน Bash เราสามารถใช้ไวยากรณ์บรรทัดคำสั่งที่กระชับและชัดเจนซึ่งใช้ประโยชน์จากคำสั่งและพารามิเตอร์ในตัว กระบวนการพิมพ์ “Hello World” เกี่ยวข้องกับการเรียกใช้ยูทิลิตี้ echo พร้อมอาร์กิวเมนต์ที่เหมาะสมเพื่อแสดงข้อความบนหน้าจอเทอร์มินัล
กรุณาเปิดโปรแกรมแก้ไขข้อความที่เหมาะสม เช่น Microsoft Word หรือ Google Docs และเริ่มต้นทำงานกับเอกสารใหม่ที่มีบรรทัดซอร์สโค้ดต่อจากนั้นด้านล่าง:
⭐ บรรทัดแรกของสคริปต์ Bash ของคุณควรมีลักษณะดังนี้:
#!/bin/bash
คำสั่ง shebang แสดงด้วยสัญลักษณ์ “#!” ตามด้วยเส้นทางไปยังไบนารีที่ปฏิบัติการได้และตีความโดยตัวโหลดของระบบปฏิบัติการ ทำหน้าที่เป็นองค์ประกอบที่สำคัญในการพิจารณาล่ามที่เหมาะสมสำหรับการรันสคริปต์ที่กำหนด โดยเฉพาะอย่างยิ่ง เมื่อพบคำสั่ง shebang “#!/bin/bash” ภายในไฟล์สคริปต์ ระบบปฏิบัติการจะเรียกใช้ล่าม Bash เพื่อรันสคริปต์ตามนั้น
⭐ บรรทัดใด ๆ ที่ขึ้นต้นด้วยสัญลักษณ์ # ถือเป็นความคิดเห็น บรรทัด shebang เป็นกรณีพิเศษ แต่คุณสามารถใช้ความคิดเห็นของคุณเองเพื่ออธิบายโค้ดของคุณได้ เพิ่มความคิดเห็นในบรรทัด 2 เช่น:
# Print some text from a bash script
⭐ คุณสามารถพิมพ์ไปยังเอาต์พุตมาตรฐานได้โดยใช้คำสั่ง echo ตามด้วยค่าที่คุณต้องการพิมพ์ เพิ่มสิ่งต่อไปนี้ในบรรทัด 3:
echo "Hello World"
เมื่อสร้างสคริปต์ใน Bash ขอแนะนำให้ปฏิบัติตามหลักการตั้งชื่อโดยการต่อท้ายนามสกุลไฟล์".sh"เข้ากับชื่อไฟล์ของสคริปต์ แม้ว่าสิ่งนี้จะไม่จำเป็นอย่างเคร่งครัด แต่การใช้แบบแผนดังกล่าวสามารถช่วยให้สคริปต์สามารถระบุและจัดระเบียบได้ง่ายขึ้น
⭐ หากต้องการเรียกใช้สคริปต์ของคุณ ให้ทำให้ไฟล์ปฏิบัติการได้ ใช้คำสั่ง chmod (“โหมดเปลี่ยน”) ร่วมกับอาร์กิวเมนต์ \+x (“ปฏิบัติการ”) และชื่อของเชลล์สคริปต์ของคุณ:
chmod \+x hello_world.sh
⭐ ใช้คำสั่งนี้เพื่อเรียกใช้สคริปต์จากภายในไดเร็กทอรี:
./hello_world.sh
⭐ เมื่อสคริปต์ทำงาน มันจะพิมพ์ข้อความ “Hello World” ไปยังเทอร์มินัลของคุณ:
สร้างไดเรกทอรีโดยการอ่านอินพุต
การรวมฟังก์ชันการทำงานของคำสั่งที่ปกติป้อนในเทอร์มินัล เช่น การสร้างไดเร็กทอรีใหม่ผ่านการใช้คำสั่ง mkdir ภายในสคริปต์ สามารถทำได้ผ่านการใช้สคริปต์แบบกำหนดเอง
⭐ เริ่มต้นด้วยบรรทัด shebang เหมือนเดิม:
#!/bin/bash
⭐ แจ้งให้ผู้ใช้ระบุชื่อไดเร็กทอรีโดยใช้คำสั่ง echo เหมือนเมื่อก่อน:
echo "Enter new directory name:"
⭐ ใช้คำสั่งอ่านในตัวเพื่อดึงข้อมูลอินพุตของผู้ใช้ อาร์กิวเมนต์เดียวตั้งชื่อตัวแปรที่เชลล์จะเก็บข้อมูลอินพุตไว้ใน:
read newdir
⭐ เมื่อคุณต้องการใช้ค่าที่เก็บไว้ในตัวแปร ให้เติมชื่อตัวแปรด้วยสัญลักษณ์ดอลลาร์ ($ ) คุณสามารถส่งผ่านเนื้อหาของตัวแปรอินพุตเป็นอาร์กิวเมนต์ไปยังคำสั่ง mkdir เพื่อสร้างไดเร็กทอรีใหม่:
mkdir $newdir
⭐ เมื่อคุณเรียกใช้สคริปต์นี้ มันจะแจ้งให้คุณป้อนข้อมูล ป้อนชื่อไดเร็กทอรีที่ถูกต้องแล้วคุณจะเห็นว่าสคริปต์สร้างขึ้นในไดเร็กทอรีปัจจุบันของคุณ:
สร้างไดเรกทอรีโดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง
แทนที่จะป้อนอินพุตด้วยตนเอง โปรแกรมบรรทัดคำสั่ง Linux จำนวนมากอนุญาตให้มีการโต้แย้งเมื่อดำเนินการเพื่อที่จะมีอิทธิพลต่อการดำเนินการ
ภายในขอบเขตของสคริปต์ของคุณ คุณสามารถใช้การใช้ประโยชน์ของตัวแปร $1 ถึง $9 เพื่อแสดงค่าของอาร์กิวเมนต์ที่หนึ่งถึงเก้าตามลำดับ การใช้งานหรือวัตถุประสงค์เฉพาะที่ใช้ตัวแปรเหล่านี้อาจแตกต่างกันไปขึ้นอยู่กับความต้องการของงานที่กำหนด
⭐ สร้างไดเร็กทอรีโดยใช้คำสั่ง mkdir จากตัวอย่างก่อนหน้านี้ อย่างไรก็ตาม คราวนี้ ให้ใช้ตัวแปรบิวท์อิน $1:
#!/bin/bash
mkdir $1
⭐ รันสคริปต์ คราวนี้ส่งชื่อไดเร็กทอรีใหม่ที่คุณเลือกเป็นอาร์กิวเมนต์:
./arg_dir.sh Test
เมื่อรันสคริปต์โดยไม่ต้องป้อนข้อมูลใด ๆ อาจพบข้อผิดพลาดการใช้งานที่ขึ้นต้นด้วย"mkdir"
ในกรณีที่ไม่มีอาร์กิวเมนต์บรรทัดคำสั่ง พารามิเตอร์ตำแหน่งแรก ($1) จะให้ค่าว่าง เมื่อดำเนินการคำสั่ง “mkdir” ภายในสคริปต์ จะไม่มีอาร์กิวเมนต์ถูกส่งผ่านไป ส่งผลให้คำสั่ง “mkdir” ส่งคืนข้อผิดพลาด เพื่อหลีกเลี่ยงปัญหานี้ เราอาจตรวจสอบเงื่อนไขดังกล่าวด้วยตนเองและให้ข้อความแสดงข้อผิดพลาดที่เป็นมิตรต่อผู้ใช้มากขึ้นแทน
⭐ เช่นเคย ให้เริ่มต้นด้วยบรรทัด shebang:
#!/bin/bash
⭐ ก่อนที่คุณจะโทร mkdir ให้ตรวจสอบอาร์กิวเมนต์แรกที่ว่างเปล่า (เช่น ไม่มีอาร์กิวเมนต์) คุณสามารถทำได้โดยใช้คำสั่ง if ของ Bash ซึ่งรันโค้ดตามเงื่อนไข:
if ["$1" = ""]; then
⭐ หากอาร์กิวเมนต์แรกว่างเปล่า ให้พิมพ์ข้อผิดพลาดและออกจากสคริปต์ของคุณ:
echo "Please provide a new directory name as the first argument"
exit
⭐ คีย์เวิร์ด “fi” ที่แปลกเล็กน้อย (“if” กลับด้าน) ส่งสัญญาณการสิ้นสุดคำสั่ง if ใน Bash:
fi
⭐ สคริปต์ของคุณสามารถดำเนินการต่อได้เหมือนเดิม เพื่อจัดการกับกรณีและปัญหาเมื่อมีข้อโต้แย้ง:
mkdir $1
ในการดำเนินการทำซ้ำที่อัปเดตของโปรแกรมซอฟต์แวร์ในปัจจุบัน จำเป็นต้องระบุพารามิเตอร์อินพุตที่จำเป็นทั้งหมด การไม่ปฏิบัติตามจะส่งผลให้มีการสร้างการแจ้งเตือนแจ้งให้ผู้ใช้ทราบถึงการกำกับดูแลดังกล่าว
ลบไฟล์โดยใช้ฟังก์ชัน Bash
หากคุณพบโค้ดที่ซ้ำกัน การห่อหุ้มโค้ดไว้ภายในฟังก์ชันอาจเป็นประโยชน์ ซึ่งช่วยให้สามารถนำลอจิกของฟังก์ชันไปใช้ ณ จุดที่ต้องการได้โดยเพียงแค่เรียกใช้ตามความจำเป็น
แน่นอนว่านี่คือภาพประกอบของฟังก์ชันที่กำจัดไฟล์ที่ระบุ
⭐ เริ่มต้นด้วยบรรทัด shebang:
#!/bin/bash
⭐ กำหนดฟังก์ชันโดยการเขียนชื่อตามด้วยวงเล็บว่างและคำสั่งภายในวงเล็บปีกกา:
del_file() {
echo "deleting $1"
rm $1
}
จากนั้นคุณสามารถเรียกใช้ฟังก์ชันและส่งชื่อไฟล์ที่จะลบได้:
del_file test.txt
เมื่อทำการเรียกใช้ฟังก์ชัน มันจะกำหนดตัวแปรพิเศษเฉพาะ “$?” ด้วยโค้ดทางออกของคำสั่งสุดท้ายที่ถูกรัน รหัสทางออกนี้ทำหน้าที่เป็นวิธีการที่มีประสิทธิภาพในการประเมินข้อผิดพลาด และสามารถใช้เพื่อพิจารณาว่าคำสั่ง “rm” ดำเนินการได้สำเร็จหรือไม่ ดังที่แสดงไว้ภายในอินสแตนซ์นี้
if [ $? -ne 0 ]; then
echo "Sorry, could not delete the file"
fi
สร้างเครื่องคิดเลขพื้นฐานสำหรับการคำนวณทางคณิตศาสตร์
ตัวอย่างต่อไปนี้เป็นตัวอย่างอุปกรณ์การคำนวณขั้นพื้นฐาน เมื่อดำเนินการ ผู้ใช้จะป้อนตัวเลขสองตัวและเลือกฟังก์ชันทางคณิตศาสตร์ที่ต้องการดำเนินการ
นี่คือรหัสสำหรับ calc.sh:
#!/bin/bash
# Take operands as input
echo "Enter first number: "
read a
echo "Enter second number: "
read b
# Input type of operation
echo "Enter Arithmetic Operation Choice :"
echo "Addition"
echo "Subtraction"
echo "Multiplication"
echo "Division"
read choice
# calculator operations
case $choice in
1)
result=`echo $a \+ $b | bc`
;;
2)
result=`echo $a - $b | bc`
;;
3)
result=`echo $a \* $b | bc`
;;
4)
result=`echo "scale=2; $a / $b" | bc`
;;
esac
echo "Result: $result"
พิจารณาการใช้นิพจน์ case
ใน Bash ซึ่งทำหน้าที่เป็นโครงสร้างที่คล้ายคลึงกับคำสั่ง switch ที่มีอยู่ในภาษาโปรแกรมต่างๆ ซึ่งช่วยให้สามารถประเมินมูลค่าของพารามิเตอร์เทียบกับค่าที่กำหนดไว้ล่วงหน้าหลายค่า จากนั้นจึงดำเนินการฟังก์ชันที่เกี่ยวข้องตามผลลัพธ์ของการประเมินดังกล่าว
สคริปต์นี้ใช้การใช้คำสั่ง thebc เพื่อดำเนินการคำนวณทางคณิตศาสตร์ทุกครั้ง