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

วิธีเขียนฟังก์ชันใน Bash

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

STIR=100
SNOOZE=86400

function feed_culture {
  remove_from(pantry)
  add(flour, water)
  stir($STIR)
  sleep($SNOOZE)
}

และต่อมาก็นวดแป้งและพิสูจน์แป้ง:

KNEAD=600
SNOOZE=7200

function process_dough {
  remove_from(proofing_drawer)
  knead($KNEAD)
  return_to_drawer($SNOOZE)
}

ในการเขียนโปรแกรม รูทีนย่อยเหล่านี้สามารถแสดงเป็น ฟังก์ชัน . ฟังก์ชันมีความสำคัญสำหรับโปรแกรมเมอร์ เนื่องจากช่วยลดความซ้ำซ้อนในโค้ด ซึ่งจะช่วยลดปริมาณการบำรุงรักษาที่จำเป็น ตัวอย่างเช่น ในสถานการณ์สมมติของการอบขนมปังแบบเป็นโปรแกรม หากคุณต้องการเปลี่ยนระยะเวลาในการพิสูจน์แป้ง ตราบใดที่คุณเคยใช้ฟังก์ชันมาก่อน คุณเพียงแค่ต้องเปลี่ยนค่าของวินาทีหนึ่งครั้ง ไม่ว่าจะโดย โดยใช้ตัวแปร (เรียกว่า SNOOZE ในโค้ดตัวอย่าง) หรือโดยตรงในรูทีนย่อยที่ประมวลผลโด วิธีนี้ช่วยคุณประหยัดเวลาได้มาก เพราะคุณไม่จำเป็นต้องค้นหา codebase ทุกครั้งที่พูดถึงแป้งโดว์ที่เพิ่มขึ้น ไม่ต้องกังวลว่าจะพลาดอะไรไปมาก ข้อบกพร่องหลายอย่างเกิดจากค่าที่ไม่ได้รับซึ่งไม่ได้รับการเปลี่ยนแปลงหรือโดย sed ที่ดำเนินการไม่ดี ออกคำสั่งโดยหวังว่าจะจับทุกนัดสุดท้ายโดยไม่ต้องออกล่าด้วยตนเอง

ใน Bash การกำหนดฟังก์ชันนั้นง่ายพอๆ กับการตั้งค่าในไฟล์สคริปต์ที่คุณกำลังเขียนหรือในไฟล์แยกต่างหาก หากคุณบันทึกฟังก์ชันลงในไฟล์เฉพาะ คุณสามารถ source ลงในสคริปต์ของคุณเหมือนกับที่คุณจะ include ไลบรารีในภาษา C หรือ C++ หรือ import โมดูลใน Python ในการสร้างฟังก์ชัน Bash ให้ใช้คำหลัก function :

function foo {
# code here
}

นี่เป็นตัวอย่างง่ายๆ (และค่อนข้างวางแผน เนื่องจากอาจทำให้ง่ายขึ้น) ตัวอย่างการทำงานของฟังก์ชันที่มีอาร์กิวเมนต์:

#!/usr/bin/env bash
ARG=$1

function mimic {
  if [[ -z $ARG ]]; then
    ARG='world'
  fi
  echo "hello $ARG"
}

mimic $ARG

นี่คือผลลัพธ์:

$ ./mimic
hello world
$ ./mimic everybody
hello everybody

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

หากไม่มีสายเรียกฟังก์ชัน ฟังก์ชันจะถูกกำหนดเท่านั้นและจะไม่ทำงาน

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

การใช้ฟังก์ชัน

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