Cara menggunakan fungsi dalam bash

Cara menggunakan fungsi di Bash menggunakan bahasa komputer berasaskan shell Unix, yang sesuai dengan POSIX. Sebagai bahasa, fungsinya terdiri dari penafsiran perintah Linux, memungkinkan kita mengotomatisasi proses berulang dan juga membuat perintah dari perintah sistem operasi. Dalam artikel ini kita akan mengulas cara menggunakan fungsi dalam bash. Saya cadangkan membaca artikelnya bagaimana buat skrip anda sendiri menggunakan bash.

Dalam skrip yang kami cadangkan, kami menggunakan bahasa Bash untuk mencari fail, mengetahui namanya. Untuk ini kami akan menggunakan cari perintah tetapi dengan bantuan fungsi yang telah ditentukan sebelumnya dalam skrip tersebut. Anda harus mengambil kira keunikan atau batasan Bash yang tidak terdapat dalam semua bahasa: untuk memanggil fungsi mesti ditentukan sebelumnya.

Tentukan fungsi

Terdapat dua cara untuk menentukan fungsi: dengan atau tanpa deklarasi fungsi:

function nombre_funcion () 
{
    # codigo
}

atau ini yang lain, yang saya gunakan seperti yang akan anda lihat kemudian.

nombre_funcion ()
{
    # codigo
}

Juga Bash juga menyediakan kaedah untuk melepasi parameter dan mengembalikan hasil. yang akan kita lihat dalam artikel akan datang.

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


Analisis skrip

Definisi

Untuk bash setiap proses yang berjaya diselesaikan mesti mempunyai kod "0" sebagai isyarat. Garis 12 dan 13 menentukan kod ralat yang dikendalikan EXIT_OK untuk berjaya y EXIT_BAD untuk keluar apabila gagal.

Pada baris 15 dan 16, pemboleh ubah POLA dan DIREKTORI diberikan parameter pertama ($ 1) dan kedua ($ 2) yang muncul pada baris perintah selepas nama skrip, seperti yang akan kita lihat kemudian ketika kita melaksanakannya.

Dalam baris 18 kami membuat fungsi pertama kami. Fungsi yang disebut «pengarang» memaparkan pengarang skrip apabila kita menyebutnya dengan argumen "-a" seperti yang anda dapat lihat di jika pada baris 50 ~ 54. Hujahnya "-dan" dari baris 23 membolehkan untuk memaparkan urutan «baris seterusnya» dengan mengekod «\ n».

Panggilan ke noparams (baris 28 ~ 37) bertanggungjawab menguruskan peristiwa yang mesti berlaku ketika skrip dipanggil tanpa parameter. Kami menunjukkan, tertutup dengan betul di antara kod baris baru, sebuah pesan yang menunjukkan bahawa skrip itu harus dijalankan dengan dua parameter, maka pilihan (baris 31) ditunjukkan untuk menggunakan membaca Ini mendorong anda untuk menekan "S" atau "s" sekiranya anda ingin menunjukkan pertolongan. Dalam baris ke-32 kita secara harfiah mengatakan: 'jika jawapannya (yang datang kepada kita dalam pemboleh ubah $ BALAS) mengandungi mana-mana watak yang huruf besar atau huruf kecil ', kemudian (baris 33) menunjukkan garis kosong (baris 34) dan melaksanakan fungsi pertolongan (baris 23 ~ 26).

Fungsi nodir (baris 39 ~ 42) akan dijalankan ketika kita mengesan bahawa direktori di mana pencarian sedang dicuba tidak ada.

Fungsi

Dengan ini kita sudah ada menentukan semua fungsi yang diperlukan untuk melaksanakan program kami, yang sebenarnya bermula pada baris 44, memeriksa apakah parameter pertama yang diterima skrip adalah "-h", jika benar, jalankan fungsi bantuan dan jalan keluar yang menunjukkan penamatan normal.

Jika POLA (parameter pertama seperti yang dijelaskan dalam baris 15) adalah "-a", penulis akan ditampilkan mengikuti mekanisme yang sama yang dijelaskan dalam perenggan sebelumnya untuk pilihan "-h".

Di talian 56 dikawal bahawa kita tidak menerima kurang dari dua parameterDalam kes ini, fungsi noparams dijalankan, maka jika dalam baris 60 kita dapat mengetahui jika direktori di mana kita mahu melakukan carian ada, jika ada, garis kosong ditunjukkan, cari perintah dengan alamat direktori di mana kita ingin menjalankan carian diikuti dengan pola (awal nama fail yang kita cari) baris kosong baru dan menggunakan keluar $? kami mempercayakan output skrip kami ke hasil yang dihasilkan oleh find. Sekiranya keadaan kewujudan direktori adalah salah (baris 67) kita membuat panggilan ke fungsi nodir dan kami keluar menunjukkan penamatan yang tidak normal.

Pelaksanaan dan ujian

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

En mengikuti artikel mengenai Bash kita akan melihat mekanisme untuk gunakan parameter dalam fungsiKami juga akan melihat bagaimana mengartikulasikan data pulangan dari yang sama.

Saya berharap dan berharap agar siaran ini bermanfaat untuk anda.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

      josea kata

    Hello,
    sangat menarik dan sangat jelas.
    Sekadar catatan; a $ hilang pada baris 68 di hadapan pemboleh ubah EXIT_BAD.
    Saya akan terus belajar dengan pasti dengan artikel anda.