Contents

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” ไปยังเทอร์มินัลของคุณ: /th/images/screenshot-2024-01-09-at-13-31-56.png

สร้างไดเรกทอรีโดยการอ่านอินพุต

การรวมฟังก์ชันการทำงานของคำสั่งที่ปกติป้อนในเทอร์มินัล เช่น การสร้างไดเร็กทอรีใหม่ผ่านการใช้คำสั่ง mkdir ภายในสคริปต์ สามารถทำได้ผ่านการใช้สคริปต์แบบกำหนดเอง

⭐ เริ่มต้นด้วยบรรทัด shebang เหมือนเดิม:

 #!/bin/bash 

⭐ แจ้งให้ผู้ใช้ระบุชื่อไดเร็กทอรีโดยใช้คำสั่ง echo เหมือนเมื่อก่อน:

 echo "Enter new directory name:" 

⭐ ใช้คำสั่งอ่านในตัวเพื่อดึงข้อมูลอินพุตของผู้ใช้ อาร์กิวเมนต์เดียวตั้งชื่อตัวแปรที่เชลล์จะเก็บข้อมูลอินพุตไว้ใน:

 read newdir 

⭐ เมื่อคุณต้องการใช้ค่าที่เก็บไว้ในตัวแปร ให้เติมชื่อตัวแปรด้วยสัญลักษณ์ดอลลาร์ ($ ) คุณสามารถส่งผ่านเนื้อหาของตัวแปรอินพุตเป็นอาร์กิวเมนต์ไปยังคำสั่ง mkdir เพื่อสร้างไดเร็กทอรีใหม่:

 mkdir $newdir 

⭐ เมื่อคุณเรียกใช้สคริปต์นี้ มันจะแจ้งให้คุณป้อนข้อมูล ป้อนชื่อไดเร็กทอรีที่ถูกต้องแล้วคุณจะเห็นว่าสคริปต์สร้างขึ้นในไดเร็กทอรีปัจจุบันของคุณ: /th/images/screenshot-2024-01-09-at-13-39-11.png

สร้างไดเรกทอรีโดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง

แทนที่จะป้อนอินพุตด้วยตนเอง โปรแกรมบรรทัดคำสั่ง Linux จำนวนมากอนุญาตให้มีการโต้แย้งเมื่อดำเนินการเพื่อที่จะมีอิทธิพลต่อการดำเนินการ

ภายในขอบเขตของสคริปต์ของคุณ คุณสามารถใช้การใช้ประโยชน์ของตัวแปร $1 ถึง $9 เพื่อแสดงค่าของอาร์กิวเมนต์ที่หนึ่งถึงเก้าตามลำดับ การใช้งานหรือวัตถุประสงค์เฉพาะที่ใช้ตัวแปรเหล่านี้อาจแตกต่างกันไปขึ้นอยู่กับความต้องการของงานที่กำหนด

⭐ สร้างไดเร็กทอรีโดยใช้คำสั่ง mkdir จากตัวอย่างก่อนหน้านี้ อย่างไรก็ตาม คราวนี้ ให้ใช้ตัวแปรบิวท์อิน $1:

 #!/bin/bash
mkdir $1 

⭐ รันสคริปต์ คราวนี้ส่งชื่อไดเร็กทอรีใหม่ที่คุณเลือกเป็นอาร์กิวเมนต์:

 ./arg_dir.sh Test 

เมื่อรันสคริปต์โดยไม่ต้องป้อนข้อมูลใด ๆ อาจพบข้อผิดพลาดการใช้งานที่ขึ้นต้นด้วย"mkdir"

/th/images/screenshot-2024-01-09-at-13-42-32.png

ในกรณีที่ไม่มีอาร์กิวเมนต์บรรทัดคำสั่ง พารามิเตอร์ตำแหน่งแรก ($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 

ในการดำเนินการทำซ้ำที่อัปเดตของโปรแกรมซอฟต์แวร์ในปัจจุบัน จำเป็นต้องระบุพารามิเตอร์อินพุตที่จำเป็นทั้งหมด การไม่ปฏิบัติตามจะส่งผลให้มีการสร้างการแจ้งเตือนแจ้งให้ผู้ใช้ทราบถึงการกำกับดูแลดังกล่าว

/th/images/screenshot-2024-01-09-at-13-49-38.png

ลบไฟล์โดยใช้ฟังก์ชัน Bash

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

แน่นอนว่านี่คือภาพประกอบของฟังก์ชันที่กำจัดไฟล์ที่ระบุ

⭐ เริ่มต้นด้วยบรรทัด shebang:

 #!/bin/bash 

⭐ กำหนดฟังก์ชันโดยการเขียนชื่อตามด้วยวงเล็บว่างและคำสั่งภายในวงเล็บปีกกา:

 del_file() {
    echo "deleting $1"
    rm $1
} 

จากนั้นคุณสามารถเรียกใช้ฟังก์ชันและส่งชื่อไฟล์ที่จะลบได้:

 del_file test.txt 

/th/images/bash-del-file.png

เมื่อทำการเรียกใช้ฟังก์ชัน มันจะกำหนดตัวแปรพิเศษเฉพาะ “$?” ด้วยโค้ดทางออกของคำสั่งสุดท้ายที่ถูกรัน รหัสทางออกนี้ทำหน้าที่เป็นวิธีการที่มีประสิทธิภาพในการประเมินข้อผิดพลาด และสามารถใช้เพื่อพิจารณาว่าคำสั่ง “rm” ดำเนินการได้สำเร็จหรือไม่ ดังที่แสดงไว้ภายในอินสแตนซ์นี้

 if [ $? -ne 0 ]; then
    echo "Sorry, could not delete the file"
fi 

/th/images/bash-del-file-fail.png

สร้างเครื่องคิดเลขพื้นฐานสำหรับการคำนวณทางคณิตศาสตร์

ตัวอย่างต่อไปนี้เป็นตัวอย่างอุปกรณ์การคำนวณขั้นพื้นฐาน เมื่อดำเนินการ ผู้ใช้จะป้อนตัวเลขสองตัวและเลือกฟังก์ชันทางคณิตศาสตร์ที่ต้องการดำเนินการ

นี่คือรหัสสำหรับ 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 เพื่อดำเนินการคำนวณทางคณิตศาสตร์ทุกครั้ง

/th/images/bash-calc.png