การเขียนสคริปต์ทุบตีเป็นเครื่องมือสำคัญสำหรับนักพัฒนาในการทำงานอัตโนมัติใน Linux
สคริปต์ทุบตีสามารถใช้เพื่อทำให้งานการพัฒนาในเครื่องเป็นแบบอัตโนมัติได้ (เช่น การอัปโหลดไฟล์สำหรับการปรับใช้ รวบรวมแอป หรือการปรับขนาดรูปภาพจำนวนมาก) เช่นเดียวกับงานฝั่งเซิร์ฟเวอร์ (การส่งอีเมลตามกำหนดเวลา รวบรวมข้อมูลตามช่วงเวลา หรือส่งการแจ้งเตือนไปยังอุปกรณ์ )
คุณจะต้องการเรียกใช้งานบางอย่างโดยขึ้นอยู่กับผลลัพธ์ของงานหรือตัวแปรอื่น และนั่นคือที่ที่ ถ้า … อื่น จะช่วยคุณ. กระบวนการตัดสินใจในสคริปต์ทุบตีนี้เรียกโดยใช้เงื่อนไข .
บทแนะนำนี้จะให้รายละเอียดและตัวอย่างการใช้งานสำหรับ if… else คำสั่งใน Bash
การใช้ if คำชี้แจง
คำสั่ง if อย่างง่ายจะดำเนินการกระทำการที่มีอยู่หากเงื่อนไขเป็นจริง และมีลักษณะดังนี้:
if CONDITIONS; then ACTIONS fi
ตัวอย่างแบบเต็ม:
#!/bin/bash if [ 2 -lt 3 ]; then echo "2 is less than 3!" fi
โปรดทราบว่า:
- สคริปต์ทุบตีทั้งหมดเริ่มต้นด้วยบรรทัด #!/bin/bash
- The -lt ตัวดำเนินการตรวจสอบว่าค่าแรกน้อยกว่าค่าที่สองหรือไม่ หากเราต้องการตรวจสอบว่าค่าที่ 2 มากกว่าค่าแรก เราจะใช้ -gt
- อ่านต่อเพื่อดูรายการตัวดำเนินการเชิงตรรกะเพิ่มเติม
- เรากำลังใช้ เสียงสะท้อน คำสั่งเพื่อส่งออกข้อความไปยังบรรทัดคำสั่ง
- ถ้า ข้อความลงท้ายด้วย fi . เสมอ เพื่อยุติพวกเขา
การใช้ อื่น คำชี้แจง
หากคุณต้องการดำเนินการตามชุดเงื่อนไข แล้วจึงดำเนินการอย่างอื่น เท่านั้น หากเงื่อนไขเหล่านั้นล้มเหลว คุณสามารถใช้ อื่น คำสั่ง:
#!/bin/bash echo -n "Enter number: " read number if [ $number -lt 3 ]; then echo "$number is less than 3!" else echo "$number is not less than 3!" fi
โปรดทราบว่า:
- เรายังคงใช้องค์ประกอบเดียวกันกับด้านบนเพื่อเปรียบเทียบค่าและการแสดงผลข้อความ
- เรากำลังใช้ อ่าน คำสั่งรับข้อมูลจากผู้ใช้
- เราใช้ตัวแปรเพื่อเก็บค่าไว้ใช้ในภายหลัง
การใช้ เอลฟ์ (หากเป็นอย่างอื่น) คำชี้แจง
หากต้องการตรวจสอบเงื่อนไขหลายชุดและดำเนินการต่างกันหากการทดสอบแต่ละรายการเป็นจริง ให้ใช้ elif (หรือถ้า) คำสั่ง:
#!/bin/bash echo -n "Enter number: " read number if [ $number -lt 3 ]; then echo "$number is less than 3!" elif [ $number -eq 3]; then echo "$number is equal to 3!" else echo "$number is not less than 3!" fi
หลายเงื่อนไขใน ถ้า คำชี้แจง
หากคุณมีเงื่อนไขหลายข้อที่ต้องการตรวจสอบ คุณสามารถใช้ && (และ ) และ || (หรือ ) โอเปอเรเตอร์เพื่อตัดสินใจว่าควรดำเนินการหรือไม่
#!/bin/bash echo -n "Enter number: " read number if [[ $number -lt 3 ]] && [[ $number -lt 0 ]]; then echo "$number is less than three and is negative" elif [[ $number -lt 3 ]] || [[ $number -gt 6 ]]; then echo "$number is not negative, but is less than 3 or greater than 6" else echo "$number is greater than3 and less than 6" fi
การซ้อนคำสั่ง
คุณสามารถวาง ถ้า ข้อความภายในอื่นๆ ถ้า คำชี้แจง:
#!/bin/bash echo -n "Enter number: " read number if [$number -gt 3]; then echo "$number is greater than 3" if [$number -gt 6]; then echo "$number is also greater than 6" else echo "$number is not also greater than 6" fi fi
ตัวดำเนินการเปรียบเทียบ
ในตัวอย่างข้างต้น เราได้ใช้ -lt (น้อยกว่า), -gt (มากกว่า) และ = (เท่ากับ) ตัวดำเนินการ ต่อไปนี้คือตัวดำเนินการเชิงตรรกะอื่นๆ ที่ใช้กันทั่วไป:
การเปรียบเทียบตัวเลข
$number1 -eq $number2 : Returns true if the variables are equal $number1 -gt $number2 : Returns true if $number1 is greater than $number2 $number1 -ge $number2 : Returns true if $number1 is equal to or greater than $number2 $number1 -lt $number2 : Returns true if $number1 is less than $number2 $number1 -le $number2 : Returns true if $number1 is equal to or less than $number2
การเปรียบเทียบสตริง
$string1 = $string2 : Returns true if $string1 and $string2 are equal $string1 != $string2 : Returns true if $string1 and $string2 are not equal
ดังที่แสดงด้านบน เมื่อต้องการย้อนกลับผลลัพธ์ของนิพจน์การเปรียบเทียบ ให้วาง ! (NOT) โอเปอเรเตอร์ที่อยู่ข้างหน้า เช่น *!=หมายถึง NOT EQUALS
เมื่อเปรียบเทียบสตริง ให้ใส่เครื่องหมายคำพูดคู่เสมอเพื่อไม่ให้ ของคุณตีความช่องว่างใดๆ ผิด สคริปต์ทุบตี
คุณควรห่อตัวแปรที่มีสตริงในเครื่องหมายคำพูดเพื่อให้แน่ใจว่าจะไม่ตีความผิด:
#!/bin/bash echo -n "Enter string: " read string if ["$string" = "hello there!"] echo "You said hello there!" fi
การตรวจสอบสถานะของไฟล์หรือไดเร็กทอรี
-d $filepath : Returns true if the $filepath exists and is a directory -e $filepath : Returns true if the $filepath exists regardless of whether it's a file or directory -f $filepath : Returns true if the $filepath exists and is a file -h $filepath : Returns true if the $filepath exists and is a symbolic link -r $filepath : Returns true if the $filepath exists and is readable -w $filepath : Returns true if the $filepath exists and is writable -x $filepath : Returns true if the $filepath exists and is executable
บทสรุป
การสร้างสคริปต์ทุบตีของคุณเองสามารถช่วยคุณประหยัดเวลาได้มาก และเขียนได้ค่อนข้างง่ายเมื่อคุณทราบพื้นฐานการสร้างพื้นฐานแล้ว
ถ้า… อื่น คำสั่งช่วยให้คุณควบคุมวิธีที่สคริปต์ของคุณตอบสนองต่อการป้อนข้อมูลของผู้ใช้หรือสถานะของไฟล์
ดูบทความ Bash อื่นๆ ของเราเพื่อเรียนรู้เพิ่มเติม!