Bash-da funksiyalardan necə istifadə olunur

Bu Unix qabığı əsaslı, POSIX uyğun kompüter dilindən istifadə edərək Bashdakı funksiyalardan necə istifadə olunur. Bir dil olaraq, funksiyası, təkrarlanan proseslərimizi avtomatlaşdırmağa və əməliyyat sistemi əmrlərindən əmrlər yaratmağa imkan verən Linux əmrlərinin şərhindən ibarətdir. Bu yazıda nəzərdən keçirəcəyik bashdakı funksiyalardan necə istifadə ediləcəyi. Məqaləni necə oxumağı məsləhət görürəm bash istifadə edərək öz skriptlərinizi yaradın.

Təklif etdiyimiz ssenaridə, adını tapmaqla bir fayl axtarmaq üçün Bash dilindən istifadə edirik. Bunun üçün istifadə edəcəyik əmri tapmaq lakin əvvəllər sözügedən ssenaridə müəyyən edilmiş funksiyaların köməyi ilə. Başın bütün dillərdə olmayan bir xüsusiyyəti və ya məhdudiyyətini nəzərə almalısan: bir funksiyanı çağırmaq üçün müəyyənləşdirilməlidir əvvəl.

Funksiyaları müəyyənləşdirin

Funksiyaları müəyyənləşdirməyin iki yolu var: funksiya bəyannaməsi ilə və ya olmadan:

function nombre_funcion () 
{
    # codigo
}

ya da bu birini, daha sonra görəcəyiniz kimi istifadə etdiyim.

nombre_funcion ()
{
    # codigo
}

Həmçinin Bash, parametrlərin ötürülməsi və nəticələrin qaytarılması üçün bir metod da təqdim edir. bundan sonrakı məqalələrdə görəcəyik.

#!/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


Ssenari təhlili

Anlayışlar

Bash üçün uğurla başa çatan hər bir proses bir siqnal olaraq "0" koduna sahib olmalıdır. 12 və 13-cü sətirlər işlənən səhv kodlarını müəyyənləşdirir Uğur üçün EXIT_OK y Xəta çıxmaq üçün EXIT_BAD.

15 və 16-cı sətirlərdə PATTERN və DIRECTORY dəyişənlərə skript adından sonra əmr sətrində görünən birinci ($ 1) və ikinci ($ 2) parametrlər verilir, bunu icra etdikdə daha sonra görəcəyik.

In satır 18 ilk funksiyamızı yaradırıq. «Müəllif» adlanan funksiya ssenari müəllifliyi "~" sətirində gördüyünüz kimi "-a" arqumenti ilə çağırdığımızda. Mübahisə "və" sətir 23-dən «\ n» kodlaşdıraraq «növbəti sətir» ardıcıllığını göstərməyə imkan verir.

Noparams çağırışı (sətirlər 28 ~ 37), skript heç bir parametr olmadan çağrıldığı zaman baş verməli olan hadisələrin idarə edilməsindən məsuldur. Yeni sətir kodları arasında düzgün şəkildə yerləşdirilmiş, skriptin iki parametrlə yerinə yetirilməli olduğunu göstərən bir mesaj göstəririk, sonra istifadə üçün bir seçim (sətir 31) göstərilir oxumaq Yardım göstərmək istədiyiniz halda "S" və ya "s" düymələrini basmağınızı istər. 32-ci sətirdə sözün əsl mənasında deyirik: 'əgər cavab (dəyişən bizə gəlirsə) $ REPLY) böyük və ya kiçik hərflərdən ibarətdir ', sonra (sətir 33) boş bir sətir (sətir 34) göstərir və kömək funksiyasını yerinə yetirir (sətirlər 23 ~ 26).

Nodir funksiyası (sətirlər 39 ~ 42) axtarışa cəhd edildiyi qovluğun olmadığını aşkarladığımızda yerinə yetiriləcəkdir.

İşlevsellik

Bununla biz onsuz da var bütün lazımi funksiyaları müəyyənləşdirdi skriptin qəbul etdiyi parametrlərdən birincisinin "-h" olub olmadığını yoxlayaraq, həqiqətən, 44-cü sətirdə başlayan proqramımızı icra etmək, kömək funksiyasını yerinə yetirmək və normal ləğvini göstərən çıxışlar.

PATTERN (ilk sətir 15-də təsvir olunduğu kimi) "-a" olduqda, müəllif əvvəlki paraqrafda "-h" seçimi üçün izah edilən eyni mexanizmi izləyərək göstərilir.

Xəttdə 56 ikidən az parametr almadığımıza nəzarət edilirBu vəziyyətdə noparams funksiyası yerinə yetirilir, sonra 60-cı sətirdə tapırıq axtarış aparmaq istədiyimiz qovluq varsa, varsa, boş bir sətir göstərilir əmri tapmaq axtarış aparmaq istədiyimiz qovluğun ünvanı və ardından nümunə (axtardığımız faylın adının başlanğıcı) yeni boş bir sətir və istifadə $ çıxış? skriptimizin nəticəsini tapmaq nəticəsində əldə edilən nəticəyə əmanət edirik. Vəziyyəti qovluq varlığı səhvdir (sətir 67) nodir funksiyasına və anormal bir sonlandırma göstərərək çıxırıq.

İcra və test

$ encontrar
$ encontrar -a
$ encontrar -h
$ encontrar index aljflaskjf #directorio no existe
$ encontrar index public_html
$

En Bash haqqında aşağıdakı məqalələr üçün mexanizmləri görəcəyik parametrlərdə funksiyalarda istifadə edinBunu necə edəcəyini də görəcəyik qaytarma məlumatlarını açıq şəkildə ifadə etmək eyni.

Ümid edirəm ki, bu yazı sizin üçün faydalı oldu.


Məqalənin məzmunu bizim prinsiplərimizə uyğundur redaktor etikası. Xəta bildirmək üçün klikləyin burada.

Bir şərh, özünüzü buraxın

Şərhinizi buraxın

E-poçt ünvanından dərc olunmayacaq.

*

*

  1. Verilərdən məsul: Miguel Ángel Gatón
  2. Verilənlərin məqsədi: Nəzarət SPAM, şərh rəhbərliyi.
  3. Qanuniləşdirmə: Sizin razılığınız
  4. Məlumatların ötürülməsi: Qanuni öhdəlik xaricində məlumatlar üçüncü şəxslərə çatdırılmayacaqdır.
  5. Veri saxlama: Occentus Networks (AB) tərəfindən yerləşdirilən verilənlər bazası
  6. Hüquqlar: İstədiyiniz zaman məlumatlarınızı məhdudlaşdıra, bərpa edə və silə bilərsiniz.

  1.   Xosea deyib

    Salam,
    çox maraqlı və çox aydın.
    Yalnız bir qeyd; EXIT_BAD dəyişəninin qarşısında 68-ci sətirdə $ yoxdur.
    Məqalələrinizlə dəqiq öyrənməyə davam edəcəyəm.