วิธีใช้ฟังก์ชันใน Bash โดยใช้ภาษาคอมพิวเตอร์ที่ใช้เชลล์แบบ Unix ซึ่งเป็นไปตาม POSIX ในฐานะภาษาฟังก์ชันของมันประกอบด้วยการตีความคำสั่งของ Linux ทำให้เราสามารถทำให้กระบวนการซ้ำ ๆ ของเราเป็นไปโดยอัตโนมัติและยังสร้างคำสั่งจากคำสั่งของระบบปฏิบัติการ ในบทความนี้เราจะตรวจสอบ วิธีใช้ฟังก์ชั่นใน bash. ฉันขอแนะนำให้อ่านบทความว่า สร้างสคริปต์ของคุณเองโดยใช้ bash.
ในสคริปต์ที่เราเสนอเราใช้ภาษา Bash เพื่อค้นหาไฟล์โดยรู้ชื่อไฟล์ สำหรับสิ่งนี้เราจะใช้ไฟล์ ค้นหาคำสั่ง แต่ด้วยความช่วยเหลือของฟังก์ชันที่กำหนดไว้ก่อนหน้านี้ในสคริปต์ดังกล่าว คุณต้องคำนึงถึงลักษณะเฉพาะหรือข้อ จำกัด ของ Bash ที่ไม่มีอยู่ในทุกภาษา: ในการเรียกใช้ฟังก์ชันจะต้องกำหนด ก่อนหน้านี้
กำหนดฟังก์ชัน
มีสองวิธีในการกำหนดฟังก์ชัน: มีหรือไม่มีการประกาศฟังก์ชัน:
function nombre_funcion () { # codigo }
หรืออื่น ๆ ซึ่งเป็นสิ่งที่ฉันใช้ตามที่คุณจะเห็นในภายหลัง
nombre_funcion () { # codigo }
ด้วย Bash ยังมีวิธีการส่งผ่านพารามิเตอร์และส่งคืนผลลัพธ์ ที่เราจะเห็นในบทความต่อ ๆ ไป
#!/usr/bin/env bash # ~/.bin/encontrar # encuentra archivos a partir de la descripción de su nombre en un directorio específico # # Por Pedro Ruiz Hidalgo # version 1.0.0 # Copyright © enero 2017 # # EXIT_OK=0 EXIT_BAD=66 PATRON=$1 DIRECTORIO=$2 autor () { echo -e "\nPedro Ruiz Hidalgo @petrorum. Copyright © 2017\n" } ayuda () { echo -e "\nencontrar [PATRON] [DIRECTORIO]\n" } noparams () { echo -e "\nSon necesarios dos parámetros\nencontrar -h para ayuda\n" read -p "¿Quieres ver la ayuda? (S|s)" -n 1 -r if [[ $REPLY =~ ^[Ss]$ ]]; then echo "" ayuda fi } nodir () { echo -e "\nDirectorio no Existe\n" } if [[ $PATRON == "-h" ]]; then ayuda exit $EXIT_OK fi if [[ $PATRON == "-a" ]]; then autor exit $EXIT_OK fi if [ $# -lt 2 ]; then noparams else if [ -d $DIRECTORIO ]; then echo "" find $DIRECTORIO -name $PATRON* echo "" exit $? else nodir exit EXIT_BAD fi fi
การวิเคราะห์สคริปต์
คำจำกัดความ
สำหรับทุบตี ทุกกระบวนการที่เสร็จสมบูรณ์จะต้องมีรหัส "0" เป็นสัญญาณ. บรรทัดที่ 12 และ 13 กำหนดรหัสข้อผิดพลาดที่จัดการ EXIT_OK เพื่อความสำเร็จ y EXIT_BAD สำหรับการออกเมื่อล้มเหลว.
ในบรรทัดที่ 15 และ 16 ตัวแปร PATTERN และ DIRECTORY จะถูกกำหนดพารามิเตอร์แรก ($ 1) และวินาที ($ 2) ที่ปรากฏในบรรทัดคำสั่งหลังชื่อของสคริปต์ดังที่เราจะเห็นในภายหลังเมื่อเราดำเนินการ
ใน บรรทัด 18 เราสร้างฟังก์ชันแรกของเรา ฟังก์ชันที่เรียกว่า«ผู้เขียน»จะแสดงไฟล์ การเขียนบท เมื่อเราเรียกมันด้วยอาร์กิวเมนต์ "-a" ดังที่คุณเห็นใน if ในบรรทัดที่ 50 ~ 54 อาร์กิวเมนต์ "-และ" จากสาย 23 อนุญาตให้แสดงลำดับของ«บรรทัดถัดไป»โดยการเข้ารหัส« \ n ».
การเรียกไปยัง noparams (บรรทัดที่ 28 ~ 37) มีหน้าที่จัดการเหตุการณ์ที่ต้องเกิดขึ้นเมื่อสคริปต์ถูกเรียกโดยไม่มีพารามิเตอร์ใด ๆ เราแสดงอย่างถูกต้องระหว่างรหัสบรรทัดใหม่ข้อความที่ระบุว่าสคริปต์ต้องถูกเรียกใช้ด้วยพารามิเตอร์สองตัวจากนั้นตัวเลือก (บรรทัดที่ 31) จะแสดงให้ใช้ อ่าน จะแจ้งให้คุณกด "S" หรือ "s" ในกรณีที่คุณต้องการแสดงความช่วยเหลือ ในบรรทัดที่ 32 เราพูดตามตัวอักษรว่า: 'ถ้าคำตอบ (ซึ่งมาถึงเราในตัวแปร $ ตอบกลับ) มีอักขระใด ๆ ที่เป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กจากนั้น (บรรทัดที่ 33) จะแสดงบรรทัดว่าง (บรรทัดที่ 34) และเรียกใช้ฟังก์ชันวิธีใช้ (บรรทัดที่ 23 ~ 26)
ฟังก์ชัน nodir (บรรทัดที่ 39 ~ 42) จะทำงานเมื่อเราตรวจพบว่าไม่มีไดเร็กทอรีที่พยายามค้นหา
ฟังก์ชั่น
ด้วยสิ่งนี้เรามีอยู่แล้ว กำหนดฟังก์ชันที่จำเป็นทั้งหมด เพื่อดำเนินการโปรแกรมของเราซึ่งเริ่มต้นที่บรรทัดที่ 44 โดยตรวจสอบว่าพารามิเตอร์แรกที่สคริปต์ได้รับเป็น "-h" หรือไม่ถ้าเป็นจริงให้เรียกใช้ฟังก์ชันวิธีใช้และ ออกจากการระบุการสิ้นสุดตามปกติ.
ถ้า PATTERN (พารามิเตอร์แรกตามที่อธิบายไว้ในบรรทัดที่ 15) เป็น "-a" ผู้เขียนจะแสดงตามกลไกเดียวกันที่อธิบายไว้ในย่อหน้าก่อนหน้าสำหรับตัวเลือก "-h"
ในบรรทัด 56 มีการควบคุมว่าเราไม่ได้รับพารามิเตอร์น้อยกว่าสองพารามิเตอร์ในกรณีนี้ฟังก์ชัน noparams จะถูกเรียกใช้จากนั้นใน if ของบรรทัด 60 เราจะพบ หากไดเร็กทอรีที่เราต้องการทำการค้นหานั้นมีอยู่หากมีอยู่บรรทัดว่างจะแสดงขึ้นไฟล์ ค้นหาคำสั่ง ด้วยที่อยู่ของไดเร็กทอรีที่เราต้องการทำการค้นหาตามด้วยรูปแบบ (เริ่มต้นของชื่อไฟล์ที่เรากำลังค้นหา) บรรทัดว่างใหม่และใช้ ออกจาก $? เราให้ความไว้วางใจผลลัพธ์ของสคริปต์ของเรากับผลลัพธ์ที่สร้างโดย find ในกรณีที่เงื่อนไขของ การมีอยู่ของไดเร็กทอรีเป็นเท็จ (บรรทัดที่ 67) เราโทรไปยังฟังก์ชัน nodir และ เราออกโดยระบุว่ามีการยุติที่ผิดปกติ.
การดำเนินการและการทดสอบ
$ encontrar $ encontrar -a $ encontrar -h $ encontrar index aljflaskjf #directorio no existe $ encontrar index public_html $
En ติดตามบทความเกี่ยวกับ Bash เราจะเห็นกลไกสำหรับ ใช้พารามิเตอร์ในฟังก์ชันเราจะดูวิธีการ แสดงข้อมูลผลตอบแทนที่ชัดเจน ของพวกเขา
ฉันหวังว่าและหวังว่าโพสต์นี้จะเป็นประโยชน์สำหรับคุณ
สวัสดี
น่าสนใจมากและชัดเจนมาก
เพียงแค่ทราบ; ไม่มี $ ในบรรทัด 68 หน้าตัวแปร EXIT_BAD
ฉันจะเรียนรู้อย่างแน่นอนกับบทความของคุณ