Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation

ใน Linux กระบวนการอัตโนมัติอาศัยการเขียนสคริปต์เชลล์เป็นอย่างมาก สิ่งนี้เกี่ยวข้องกับการสร้างไฟล์ที่มีชุดคำสั่งที่สามารถดำเนินการร่วมกันได้

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

มาเริ่มกันเลย 🚀

สารบัญ

  1. ข้อกำหนดเบื้องต้น
  2. บทนำ
  3. คำจำกัดความของสคริปต์ Bash
  4. ข้อดีของการเขียนสคริปต์ Bash
  5. ภาพรวมของ Bash เชลล์และอินเทอร์เฟซบรรทัดคำสั่ง
  6. วิธีเริ่มต้นใช้งาน Bash Scripting
  7. วิธีเรียกใช้คำสั่ง Bash จาก Command Line
  8. วิธีการสร้างและดำเนินการสคริปต์ Bash
  9. พื้นฐานการเขียนสคริปต์ Bash

  10. ความคิดเห็นในสคริปต์ทุบตี

  11. ตัวแปรและประเภทข้อมูลใน Bash
  12. อินพุตและเอาต์พุตในสคริปต์ Bash
  13. คำสั่ง Bash พื้นฐาน (เสียงก้อง อ่าน ฯลฯ)
  14. คำสั่งแบบมีเงื่อนไข (ถ้า/อื่น)

  15. การวนซ้ำและการแตกแขนงใน Bash

  16. ในขณะที่วนซ้ำ
  17. สำหรับการวนซ้ำ
  18. คำชี้แจงกรณี
  19. วิธีกำหนดเวลาสคริปต์โดยใช้ cron
  20. วิธีการดีบักและแก้ไขปัญหาสคริปต์ Bash
  21. บทสรุป
  22. แหล่งข้อมูลสำหรับการเรียนรู้เพิ่มเติมเกี่ยวกับสคริปต์ Bash

ข้อกำหนดเบื้องต้น

หากต้องการปฏิบัติตามบทช่วยสอนนี้ คุณควรมีสิทธิ์เข้าถึงต่อไปนี้:

  • Linux เวอร์ชันที่ทำงานอยู่พร้อมการเข้าถึงบรรทัดคำสั่ง

หากคุณไม่ได้ติดตั้ง Linux หรือคุณเพิ่งเริ่มต้น คุณสามารถเข้าถึงบรรทัดคำสั่ง Linux ได้อย่างง่ายดายผ่าน Replit Replit เป็น IDE บนเบราว์เซอร์ที่คุณสามารถเข้าถึง bash shell ได้ภายในไม่กี่นาที

คุณยังสามารถติดตั้ง Linux บนระบบ Windows ของคุณโดยใช้ WSL (ระบบย่อย Windows สำหรับ Linux) นี่คือบทช่วยสอนสำหรับสิ่งนั้น

บทนำ

คำจำกัดความของสคริปต์ทุบตี

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

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

ข้อดีของการเขียนสคริปต์ Bash

Bash Scripting เป็นเครื่องมือที่ทรงพลังและอเนกประสงค์สำหรับงานการดูแลระบบอัตโนมัติ จัดการทรัพยากรระบบ และดำเนินงานประจำอื่นๆ ในระบบ Unix/Linux ข้อดีบางประการของเชลล์สคริปต์คือ:

  • ระบบอัตโนมัติ :เชลล์สคริปต์ช่วยให้คุณทำงานและกระบวนการที่ซ้ำกันโดยอัตโนมัติ ประหยัดเวลาและลดความเสี่ยงของข้อผิดพลาดที่อาจเกิดขึ้นจากการดำเนินการด้วยตนเอง
  • การพกพา :เชลล์สคริปต์สามารถทำงานได้บนแพลตฟอร์มและระบบปฏิบัติการต่างๆ รวมถึง Unix, Linux, macOS และแม้แต่ Windows ผ่านการใช้โปรแกรมจำลองหรือเครื่องเสมือน
  • ความยืดหยุ่น :เชลล์สคริปต์สามารถปรับแต่งได้สูงและสามารถแก้ไขได้อย่างง่ายดายเพื่อให้เหมาะกับความต้องการเฉพาะ นอกจากนี้ยังสามารถใช้ร่วมกับภาษาการเขียนโปรแกรมหรือยูทิลิตี้อื่นๆ เพื่อสร้างสคริปต์ที่มีประสิทธิภาพมากขึ้นได้
  • การเข้าถึง :เชลล์สคริปต์เขียนได้ง่ายและไม่ต้องใช้เครื่องมือหรือซอฟต์แวร์พิเศษใดๆ สามารถแก้ไขได้โดยใช้โปรแกรมแก้ไขข้อความ และระบบปฏิบัติการส่วนใหญ่มีเชลล์ล่ามในตัว
  • บูรณาการ :เชลล์สคริปต์สามารถรวมเข้ากับเครื่องมือและแอปพลิเคชันอื่นๆ ได้ เช่น ฐานข้อมูล เว็บเซิร์ฟเวอร์ และบริการคลาวด์ ช่วยให้ทำงานอัตโนมัติและการจัดการระบบที่ซับซ้อนมากขึ้นได้
  • การแก้ไขจุดบกพร่อง :เชลล์สคริปต์นั้นแก้ไขได้ง่าย และเชลล์ส่วนใหญ่มีเครื่องมือแก้ไขข้อบกพร่องและรายงานข้อผิดพลาดในตัวที่สามารถช่วยระบุและแก้ไขปัญหาได้อย่างรวดเร็ว

ภาพรวมของ Bash เชลล์และอินเทอร์เฟซบรรทัดคำสั่ง

คำว่า "shell" และ "bash" ใช้แทนกันได้ แต่มีความแตกต่างเล็กน้อยระหว่างทั้งสอง

คำว่า "เชลล์" หมายถึงโปรแกรมที่มีอินเทอร์เฟซบรรทัดคำสั่งสำหรับการโต้ตอบกับระบบปฏิบัติการ Bash (Bourne-Again SHell) เป็นหนึ่งในเชลล์ Unix/Linux ที่ใช้บ่อยที่สุด และเป็นเชลล์เริ่มต้นใน Linux หลายๆ รุ่น

อินเตอร์เฟสเชลล์หรือบรรทัดคำสั่งมีลักษณะดังนี้:

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation เชลล์ยอมรับคำสั่งจากผู้ใช้และแสดงผลลัพธ์

ในผลลัพธ์ข้างต้น 03 คือพรอมต์ของเชลล์ เมื่อเชลล์ถูกใช้แบบโต้ตอบ มันจะแสดง 12 เมื่อกำลังรอคำสั่งจากผู้ใช้

หากเชลล์ทำงานในฐานะรูท (ผู้ใช้ที่มีสิทธิ์ผู้ดูแลระบบ) พรอมต์จะเปลี่ยนเป็น 20 . พรอมต์เชลล์ superuser มีลักษณะดังนี้:

[root@host ~]#

แม้ว่า Bash จะเป็นเชลล์ประเภทหนึ่ง แต่ก็มีเชลล์อื่นๆ ให้เลือกเช่นกัน เช่น Korn เชลล์ (ksh), C เชลล์ (csh) และ Z เชลล์ (zsh) แต่ละเชลล์มีไวยากรณ์และชุดคุณลักษณะของตัวเอง แต่เชลล์ทั้งหมดมีจุดประสงค์ร่วมกันในการจัดหาอินเทอร์เฟซบรรทัดคำสั่งสำหรับการโต้ตอบกับระบบปฏิบัติการ

คุณสามารถกำหนดประเภทเชลล์ของคุณได้โดยใช้ 36 คำสั่ง:

ps

นี่คือผลลัพธ์สำหรับฉัน:

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation การตรวจสอบประเภทเชลล์ ฉันใช้ bash shell

โดยสรุป แม้ว่า "shell" เป็นคำกว้างๆ ที่อ้างถึงโปรแกรมใดๆ ที่มีอินเทอร์เฟซบรรทัดคำสั่ง แต่ "Bash" นั้นเป็นเชลล์ประเภทเฉพาะที่ใช้กันอย่างแพร่หลายในระบบ Unix/Linux

หมายเหตุ:ในบทช่วยสอนนี้ เราจะใช้เชลล์ "bash"

วิธีเริ่มต้นใช้งาน Bash Scripting

การรันคำสั่ง Bash จากบรรทัดคำสั่ง

ตามที่กล่าวไว้ข้างต้น พรอมต์ของเชลล์จะมีลักษณะดังนี้:

[username@host ~]$

คุณสามารถป้อนคำสั่งใดก็ได้หลัง 47 ลงชื่อและดูเอาต์พุตบนเทอร์มินัล

โดยทั่วไป คำสั่งจะเป็นไปตามไวยากรณ์นี้:

command [OPTIONS] arguments

เรามาหารือเกี่ยวกับคำสั่ง bash พื้นฐานบางประการและดูผลลัพธ์ของคำสั่งเหล่านั้น ฝากติดตามกันด้วยนะครับ :)

  • 58 :แสดงวันที่ปัจจุบัน
zaira@Zaira:~/shell-tutorial$ date
Tue Mar 14 13:08:57 PKT 2023
  • 67 :แสดงไดเร็กทอรีการทำงานปัจจุบัน
zaira@Zaira:~/shell-tutorial$ pwd
/home/zaira/shell-tutorial
  • 78 :แสดงรายการเนื้อหาของไดเร็กทอรีปัจจุบัน
zaira@Zaira:~/shell-tutorial$ ls
check_plaindrome.sh count_odd.sh env log temp
  • 85 :พิมพ์สตริงข้อความหรือค่าของตัวแปรไปยังเทอร์มินัล
zaira@Zaira:~/shell-tutorial$ echo "Hello bash"
Hello bash

คุณสามารถอ้างอิงถึงคู่มือคำสั่งด้วย 94 ได้ตลอดเวลา คำสั่ง

ตัวอย่างเช่น คู่มือสำหรับ 105 มีลักษณะดังนี้:

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation คุณสามารถดูตัวเลือกสำหรับคำสั่งโดยละเอียดได้โดยใช้ 111

วิธีการสร้างและดำเนินการสคริปต์ Bash

แบบแผนการตั้งชื่อสคริปต์

โดยการตั้งชื่อแบบแผน สคริปต์ทุบตีจะลงท้ายด้วย 124 . อย่างไรก็ตาม สคริปต์ทุบตีสามารถทำงานได้อย่างสมบูรณ์แบบโดยไม่ต้องใช้ 134 นามสกุล.

การเพิ่มชีบัง

สคริปต์ทุบตีเริ่มต้นด้วย 147 . Shebang คือการรวมกันของ 157 และ 168 ตามด้วยเส้นทาง bash shell นี่คือบรรทัดแรกของสคริปต์ Shebang บอกให้เชลล์ดำเนินการผ่าน bash shell Shebang เป็นเพียงเส้นทางที่แน่นอนไปยังล่าม bash

ด้านล่างนี้เป็นตัวอย่างของคำสั่ง shebang

#!/bin/bash

คุณสามารถค้นหาเส้นทางเชลล์ bash ของคุณ (ซึ่งอาจแตกต่างจากข้างต้น) โดยใช้คำสั่ง:

which bash

การสร้างสคริปต์ทุบตีแรกของเรา

สคริปต์แรกของเราแจ้งให้ผู้ใช้ป้อนเส้นทาง เนื้อหาจะถูกระบุไว้เป็นการตอบแทน

สร้างไฟล์ชื่อ 176 โดยใช้ 181 คำสั่ง คุณสามารถใช้โปรแกรมแก้ไขใดก็ได้ตามที่คุณต้องการ

vi run_all.sh

เพิ่มคำสั่งต่อไปนี้ในไฟล์ของคุณและบันทึก:

#!/bin/bash
echo "Today is " `date`
echo -e "\nenter the path to directory"
read the_path
echo -e "\n you path has the following files and folders: "
ls $the_path

เรามาดูรายละเอียดสคริปต์ทีละบรรทัดกันดีกว่า ฉันกำลังแสดงสคริปต์เดิมอีกครั้ง แต่คราวนี้มีหมายเลขบรรทัด

 1 #!/bin/bash
 2 echo "Today is " `date`
 3
 4 echo -e "\nenter the path to directory"
 5 read the_path
 6
 7 echo -e "\n you path has the following files and folders: "
 8 ls $the_path
  • บรรทัด #1:Shebang (194 ) ชี้ไปที่เส้นทาง bash shell
  • บรรทัด #2:203 คำสั่งแสดงวันที่และเวลาปัจจุบันบนเทอร์มินัล โปรดทราบว่า 210 อยู่ใน backticks
  • บรรทัด #4:เราต้องการให้ผู้ใช้ป้อนเส้นทางที่ถูกต้อง
  • บรรทัด #5:226 คำสั่งอ่านอินพุตและเก็บไว้ในตัวแปร 237 .
  • บรรทัด #8:240 คำสั่งรับตัวแปรพร้อมเส้นทางที่เก็บไว้และแสดงไฟล์และโฟลเดอร์ปัจจุบัน

กำลังดำเนินการสคริปต์ทุบตี

หากต้องการให้สคริปต์ทำงานได้ ให้กำหนดสิทธิ์ในการดำเนินการให้กับผู้ใช้ของคุณโดยใช้คำสั่งนี้:

chmod u+x run_all.sh

ที่นี่

  • 256 แก้ไขความเป็นเจ้าของไฟล์สำหรับผู้ใช้ปัจจุบัน :267 .
  • 279 เพิ่มสิทธิ์ในการดำเนินการให้กับผู้ใช้ปัจจุบัน ซึ่งหมายความว่าผู้ใช้ที่เป็นเจ้าของสามารถเรียกใช้สคริปต์ได้แล้ว
  • 281 เป็นไฟล์ที่เราต้องการเรียกใช้

คุณสามารถเรียกใช้สคริปต์โดยใช้วิธีการใดก็ได้ที่กล่าวถึง:

  • 296
  • 308
  • 316

มาดูการทำงานของมันกัน 🚀

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation

พื้นฐานการเขียนสคริปต์ Bash

ความคิดเห็นเริ่มต้นด้วย 323 ในการเขียนสคริปต์ทุบตี ซึ่งหมายความว่าบรรทัดใดๆ ที่ขึ้นต้นด้วย 338 เป็นความคิดเห็นและล่ามจะเพิกเฉย

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

นี่คือตัวอย่างความคิดเห็น:

# This is an example comment
# Both of these lines will be ignored by the interpreter

ตัวแปรและประเภทข้อมูลใน Bash

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

ไม่มีประเภทข้อมูลใน Bash ใน Bash ตัวแปรสามารถจัดเก็บค่าตัวเลข อักขระแต่ละตัว หรือสตริงอักขระได้

ใน Bash คุณสามารถใช้และตั้งค่าตัวแปรได้ด้วยวิธีต่อไปนี้:

  1. กำหนดค่าโดยตรง:
country=Pakistan
  1. กำหนดค่าตามเอาต์พุตที่ได้รับจากโปรแกรมหรือคำสั่ง โดยใช้การทดแทนคำสั่ง โปรดทราบว่า 343 จำเป็นต้องเข้าถึงค่าของตัวแปรที่มีอยู่
same_country=$country

หากต้องการเข้าถึงค่าตัวแปร ให้เพิ่ม 352 ไปที่ชื่อตัวแปร

zaira@Zaira:~$ country=Pakistan
zaira@Zaira:~$ echo $country
Pakistan
zaira@Zaira:~$ new_country=$country
zaira@Zaira:~$ echo $new_country
Pakistan

แบบแผนการตั้งชื่อตัวแปร

ในการเขียนสคริปต์ Bash ต่อไปนี้คือหลักการตั้งชื่อตัวแปร:

  1. ชื่อตัวแปรควรขึ้นต้นด้วยตัวอักษรหรือขีดล่าง (368 ).
  2. ชื่อตัวแปรสามารถประกอบด้วยตัวอักษร ตัวเลข และขีดล่าง (374 ).
  3. ชื่อตัวแปรต้องตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  4. ชื่อตัวแปรไม่ควรมีการเว้นวรรคหรืออักขระพิเศษ
  5. ใช้ชื่อที่สื่อความหมายซึ่งสะท้อนถึงวัตถุประสงค์ของตัวแปร
  6. หลีกเลี่ยงการใช้คำหลักที่สงวนไว้ เช่น 388 , 395 , 406 , 411 และอื่นๆ เป็นชื่อตัวแปร

นี่คือตัวอย่างบางส่วนของชื่อตัวแปรที่ถูกต้องใน Bash:

name
count
_var
myVar
MY_VAR

และนี่คือตัวอย่างบางส่วนของชื่อตัวแปรที่ไม่ถูกต้อง:

2ndvar (variable name starts with a number)
my var (variable name contains a space)
my-var (variable name contains a hyphen)

การปฏิบัติตามหลักการตั้งชื่อเหล่านี้ช่วยให้สคริปต์ Bash สามารถอ่านได้ง่ายขึ้นและดูแลรักษาได้ง่ายขึ้น

อินพุตและเอาต์พุตในสคริปต์ Bash

กำลังรวบรวมข้อมูล

ในส่วนนี้ เราจะพูดถึงวิธีการบางอย่างในการป้อนข้อมูลให้กับสคริปต์ของเรา

  1. การอ่านอินพุตของผู้ใช้และจัดเก็บไว้ในตัวแปร

เราสามารถอ่านอินพุตของผู้ใช้ได้โดยใช้ 426 คำสั่ง

#!/bin/bash 
echo "What's your name?" 
read entered_name 
echo -e "\nWelcome to bash tutorial" $entered_name

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation

  1. การอ่านจากไฟล์

รหัสนี้จะอ่านแต่ละบรรทัดจากไฟล์ชื่อ 438 และพิมพ์ไปที่เทอร์มินัล เราจะศึกษา while loop ในบทความนี้ในภายหลัง

while read line
do
 echo $line
done < input.txt
  1. อาร์กิวเมนต์บรรทัดคำสั่ง

ในสคริปต์ทุบตีหรือฟังก์ชัน 447 หมายถึงอาร์กิวเมนต์เริ่มต้นที่ส่งผ่าน 450 หมายถึงอาร์กิวเมนต์ที่สองที่ผ่านไป และอื่นๆ

สคริปต์นี้ใช้ชื่อเป็นอาร์กิวเมนต์บรรทัดคำสั่งและพิมพ์คำทักทายส่วนตัว

echo "Hello, $1!"

เราได้จัดเตรียม 460 แล้ว เป็นข้อโต้แย้งของเราต่อสคริปต์

#!/bin/bash
echo "Hello, $1!"

เอาต์พุต:

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation

กำลังแสดงผล

ที่นี่เราจะหารือถึงวิธีการบางอย่างในการรับเอาต์พุตจากสคริปต์

  1. การพิมพ์ไปยังเทอร์มินัล:
echo "Hello, World!"

ซึ่งจะพิมพ์ข้อความ "Hello, World!" ไปยังเทอร์มินัล

  1. การเขียนลงไฟล์:
echo "This is some text." > output.txt

สิ่งนี้จะเขียนข้อความว่า "นี่คือข้อความบางส่วน" ไปยังไฟล์ชื่อ 474 . โปรดทราบว่า 488 โอเปอเรเตอร์จะเขียนทับไฟล์หากมีเนื้อหาอยู่แล้ว

  1. การต่อท้ายไฟล์:
echo "More text." >> output.txt

ซึ่งจะต่อท้ายข้อความ "ข้อความเพิ่มเติม" ต่อท้ายไฟล์ 493 .

  1. เอาต์พุตการเปลี่ยนเส้นทาง:
ls > files.txt

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

คำสั่ง Bash พื้นฐาน (echo อ่าน ฯลฯ)

นี่คือรายการคำสั่ง bash ที่ใช้บ่อยที่สุดบางส่วน:

  1. 511 :เปลี่ยนไดเร็กทอรีเป็นตำแหน่งอื่น
  2. 523 :แสดงรายการเนื้อหาของไดเร็กทอรีปัจจุบัน
  3. 536 :สร้างไดเร็กทอรีใหม่
  4. 549 :สร้างไฟล์ใหม่
  5. 553 :ลบไฟล์หรือไดเร็กทอรี
  6. 561 :คัดลอกไฟล์หรือไดเร็กทอรี
  7. 573 :ย้ายหรือเปลี่ยนชื่อไฟล์หรือไดเร็กทอรี
  8. 587 :พิมพ์ข้อความไปยังเทอร์มินัล
  9. 596 :เชื่อมต่อและพิมพ์เนื้อหาของไฟล์
  10. 602 :ค้นหารูปแบบในไฟล์
  11. 612 :เปลี่ยนการอนุญาตของไฟล์หรือไดเร็กทอรี
  12. 628 :เรียกใช้คำสั่งด้วยสิทธิ์ผู้ดูแลระบบ
  13. 632 :แสดงจำนวนพื้นที่ว่างในดิสก์
  14. 643 :แสดงรายการคำสั่งที่ดำเนินการก่อนหน้านี้
  15. 655 :แสดงข้อมูลเกี่ยวกับกระบวนการที่ทำงานอยู่

คำสั่งแบบมีเงื่อนไข (ถ้า/อื่น)

นิพจน์ที่สร้างผลลัพธ์บูลีน จริงหรือเท็จ เรียกว่าเงื่อนไข มีหลายวิธีในการประเมินเงื่อนไข รวมถึง 663 , 679 , 681 และเงื่อนไขแบบซ้อน

ไวยากรณ์ :

if [[ condition ]];
then
 statement
elif [[ condition ]]; then
 statement 
else
 do this by default
fi

เราสามารถใช้ตัวดำเนินการเชิงตรรกะ เช่น AND 691 และหรือ 700 เพื่อทำการเปรียบเทียบที่มีนัยสำคัญมากขึ้น

if [ $a -gt 60 -a $b -lt 100 ]

เรามาดูตัวอย่างสคริปต์ Bash ที่ใช้ 711 , 726 และ 737 คำสั่งเพื่อพิจารณาว่าตัวเลขที่ผู้ใช้ป้อนเป็นค่าบวก ลบ หรือศูนย์:

#!/bin/bash
echo "Please enter a number: "
read num
if [ $num -gt 0 ]; then
 echo "$num is positive"
elif [ $num -lt 0 ]; then
 echo "$num is negative"
else
 echo "$num is zero"
fi

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

เห็นมันใช้งานจริง 🚀

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation

การวนซ้ำและการแตกแขนงใน Bash

ขณะวนซ้ำ

ในขณะที่ลูปตรวจสอบเงื่อนไขและวนซ้ำจนกว่าเงื่อนไขจะยังคงอยู่ 777 . เราจำเป็นต้องจัดเตรียมคำสั่ง counter ที่เพิ่มตัวนับเพื่อควบคุมการดำเนินการวนซ้ำ

ในตัวอย่างด้านล่าง 780 คือคำสั่ง counter ที่เพิ่มค่า 791 . การวนซ้ำจะทำงาน 10 ครั้งพอดี

#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
 echo "$i"
 (( i += 1 ))
done

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation

สำหรับการวนซ้ำ

801 วนซ้ำ เช่นเดียวกับ 819 loop ช่วยให้คุณสามารถดำเนินการคำสั่งตามจำนวนครั้งที่กำหนด แต่ละลูปแตกต่างกันในด้านไวยากรณ์และการใช้งาน

ในตัวอย่างด้านล่าง การวนซ้ำจะวนซ้ำ 5 ครั้ง

#!/bin/bash
for i in {1..5}
do
 echo $i
done

Master Bash Scripting:คู่มือสำหรับผู้เริ่มต้นใช้งาน Linux Shell Automation

คำสั่งกรณี

ใน Bash คำสั่ง case ใช้เพื่อเปรียบเทียบค่าที่กำหนดกับรายการรูปแบบและดำเนินการบล็อกโค้ดตามรูปแบบแรกที่ตรงกัน ไวยากรณ์สำหรับคำสั่ง case ใน Bash เป็นดังนี้:

case expression in
 pattern1)
 # code to execute if expression matches pattern1
 ;;
 pattern2)
 # code to execute if expression matches pattern2
 ;;
 pattern3)
 # code to execute if expression matches pattern3
 ;;
 *)
 # code to execute if none of the above patterns match expression
 ;;
esac

ในที่นี้ "นิพจน์" คือค่าที่เราต้องการเปรียบเทียบ และ "รูปแบบ 1" "รูปแบบ 2" "รูปแบบ 3" และอื่นๆ คือรูปแบบที่เราต้องการเปรียบเทียบด้วย

อัฒภาคคู่ ";;" แยกแต่ละบล็อกของโค้ดเพื่อดำเนินการสำหรับแต่ละรูปแบบ เครื่องหมายดอกจัน "*" แสดงถึงตัวพิมพ์เริ่มต้น ซึ่งจะดำเนินการหากไม่มีรูปแบบที่ระบุตรงกับนิพจน์

มาดูตัวอย่างกัน

fruit="apple"
case $fruit in
 "apple")
 echo "This is a red fruit."
 ;;
 "banana")
 echo "This is a yellow fruit."
 ;;
 "orange")
 echo "This is an orange fruit."
 ;;
 *)
 echo "Unknown fruit."
 ;;
esac

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

วิธีกำหนดเวลาสคริปต์โดยใช้ cron

Cron เป็นยูทิลิตี้อันทรงพลังสำหรับการจัดตารางงานซึ่งมีอยู่ในระบบปฏิบัติการแบบ Unix ด้วยการกำหนดค่า cron คุณสามารถตั้งค่างานอัตโนมัติให้ทำงานเป็นรายวัน รายสัปดาห์ รายเดือน หรือตามเวลาที่กำหนดได้ ความสามารถอัตโนมัติที่ได้รับจาก cron มีบทบาทสำคัญในการดูแลระบบ Linux

ด้านล่างนี้เป็นไวยากรณ์เพื่อกำหนดเวลา crons:

# Cron job example
* * * * * sh /path/to/script.sh

ที่นี่ 824 s แสดงถึงนาที ชั่วโมง วัน เดือน วันทำงาน ตามลำดับ

ด้านล่างนี้คือตัวอย่างบางส่วนของการกำหนดเวลางาน cron

กำหนดการ คำอธิบาย ตัวอย่าง 837 เรียกใช้สคริปต์ตอนเที่ยงคืนทุกวัน846 853 เรียกใช้สคริปต์ทุกๆ 5 นาที869 870 เรียกใช้สคริปต์เวลา 6.00 น. ตั้งแต่วันจันทร์ถึงวันศุกร์884 899 เรียกใช้สคริปต์ใน 7 วันแรกของทุกเดือน900 913 เรียกใช้สคริปต์ในวันแรกของทุกเดือนเวลาเที่ยง922

การใช้ crontab

939 ยูทิลิตี้นี้ใช้เพื่อเพิ่มและแก้ไขงาน cron

941 แสดงรายการสคริปต์ที่กำหนดเวลาไว้แล้วสำหรับผู้ใช้รายใดรายหนึ่ง

คุณสามารถเพิ่มและแก้ไข cron ได้ผ่านทาง 956 .

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับงานข้าวโพดได้ในบทความอื่นของฉันที่นี่

วิธีการดีบักและแก้ไขปัญหาสคริปต์ Bash

การดีบักและการแก้ไขปัญหาเป็นทักษะที่จำเป็นสำหรับ Bash scripter แม้ว่าสคริปต์ Bash จะมีประสิทธิภาพอย่างเหลือเชื่อ แต่ก็อาจมีแนวโน้มที่จะเกิดข้อผิดพลาดและพฤติกรรมที่ไม่คาดคิดได้เช่นกัน ในส่วนนี้ เราจะพูดถึงเคล็ดลับและเทคนิคบางประการในการดีบักและแก้ไขปัญหาสคริปต์ Bash

ตั้งค่า 966 ตัวเลือก

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

#!/bin/bash
set -x
# Your script goes here

ตรวจสอบรหัสทางออก

เมื่อ Bash พบข้อผิดพลาด มันจะตั้งค่ารหัสทางออกที่ระบุถึงลักษณะของข้อผิดพลาด คุณสามารถตรวจสอบรหัสออกของคำสั่งล่าสุดได้โดยใช้ 995 ตัวแปร ค่า 1001 บ่งบอกถึงความสำเร็จ ในขณะที่ค่าอื่นๆ บ่งชี้ว่ามีข้อผิดพลาด

#!/bin/bash
# Your script goes here
if [ $? -ne 0 ]; then
 echo "Error occurred."
fi

ใช้ 1015 คำสั่ง

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

#!/bin/bash
# Your script goes here
echo "Value of variable x is: $x"
# More code goes here

ใช้ 1035 ตัวเลือก

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

#!/bin/bash
set -e
# Your script goes here

การแก้ไขปัญหา crons โดยการตรวจสอบบันทึก

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

สำหรับ Ubuntu/Debian คุณจะพบ 1054 บันทึกที่:

/var/log/syslog

ตำแหน่งจะแตกต่างกันไปสำหรับการแจกแจงอื่น ๆ

ไฟล์บันทึกงาน cron อาจมีลักษณะดังนี้:

2022-03-11 00:00:01 Task started
2022-03-11 00:00:02 Running script /path/to/script.sh
2022-03-11 00:00:03 Script completed successfully
2022-03-11 00:05:01 Task started
2022-03-11 00:05:02 Running script /path/to/script.sh
2022-03-11 00:05:03 Error: unable to connect to database
2022-03-11 00:05:03 Script exited with error code 1
2022-03-11 00:10:01 Task started
2022-03-11 00:10:02 Running script /path/to/script.sh
2022-03-11 00:10:03 Script completed successfully

บทสรุป

ในบทความนี้ เราเริ่มต้นด้วยวิธีเข้าถึงเทอร์มินัล จากนั้นรันคำสั่ง bash พื้นฐานบางคำสั่ง เรายังศึกษาด้วยว่า bash shell คืออะไร เราดูสั้นๆ เกี่ยวกับการแตกสาขาโค้ดโดยใช้ลูปและเงื่อนไข สุดท้ายนี้ เราได้พูดคุยถึงเรื่องการทำให้สคริปต์เป็นอัตโนมัติโดยใช้ cron ตามด้วยเทคนิคการแก้ปัญหาบางอย่าง

แหล่งข้อมูลสำหรับการเรียนรู้เพิ่มเติมเกี่ยวกับสคริปต์ Bash

หากคุณต้องการเจาะลึกเข้าไปในโลกแห่งการเขียนสคริปต์ทุบตี ฉันขอแนะนำให้คุณดูหลักสูตร 6 ชั่วโมงบน Linux ที่ freeCodeCamp

คุณชอบอะไรที่คุณได้เรียนรู้จากบทช่วยสอนนี้ คุณสามารถเชื่อมต่อกับฉันได้บนแพลตฟอร์มเหล่านี้ 📧�

เจอกันใหม่ในบทช่วยสอนถัดไป ขอให้มีความสุขกับการเขียนโค้ด 😁

เครดิตรูปภาพแบนเนอร์:รูปภาพโดย Freepik

เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น