วิธีใช้ฟังก์ชั่นใน bash

วิธีใช้ฟังก์ชันใน 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 เราจะเห็นกลไกสำหรับ ใช้พารามิเตอร์ในฟังก์ชันเราจะดูวิธีการ แสดงข้อมูลผลตอบแทนที่ชัดเจน ของพวกเขา

ฉันหวังว่าและหวังว่าโพสต์นี้จะเป็นประโยชน์สำหรับคุณ


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

      โจเซอา dijo

    สวัสดี
    น่าสนใจมากและชัดเจนมาก
    เพียงแค่ทราบ; ไม่มี $ ในบรรทัด 68 หน้าตัวแปร EXIT_BAD
    ฉันจะเรียนรู้อย่างแน่นอนกับบทความของคุณ