Cara menggunakan fungsi di Bash

Cara menggunakan fungsi di Bash menggunakan bahasa komputer berbasis shell Unix yang sesuai dengan POSIX ini. Sebagai bahasa, fungsinya terdiri dari interpretasi perintah Linux, memungkinkan kita untuk mengotomatiskan proses berulang kita dan juga membuat perintah dari perintah sistem operasi. Pada artikel kali ini akan kami ulas cara menggunakan fungsi di bash. Saya sarankan membaca artikel caranya buat skrip Anda sendiri menggunakan bash.

Dalam skrip yang kami usulkan, kami menggunakan bahasa Bash untuk mencari file, mengetahui namanya. Untuk ini kami akan menggunakan temukan perintah tetapi dengan bantuan fungsi yang sebelumnya ditentukan dalam skrip tersebut. Anda harus mempertimbangkan keanehan atau batasan Bash yang tidak ada dalam semua bahasa: untuk memanggil suatu fungsi, fungsi itu harus ditentukan sebelumnya.

Tentukan fungsi

Ada dua cara untuk mendefinisikan fungsi: dengan atau tanpa deklarasi fungsi:

function nombre_funcion () 
{
    # codigo
}

atau yang lainnya, yang saya gunakan seperti yang akan Anda lihat nanti.

nombre_funcion ()
{
    # codigo
}

Juga Bash juga menyediakan metode untuk meneruskan parameter dan mengembalikan hasil. yang akan kita lihat di artikel mendatang.

#!/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 pesta setiap proses yang berhasil diselesaikan harus memiliki kode "0" sebagai sinyal. Baris 12 dan 13 menentukan kode kesalahan yang ditangani EXIT_OK untuk sukses y EXIT_BAD untuk keluar jika gagal.

Pada baris 15 dan 16, variabel POLA dan DIRECTORY diberikan parameter pertama ($ 1) dan kedua ($ 2) yang muncul pada baris perintah setelah nama skrip, seperti yang akan kita lihat nanti ketika kita menjalankannya.

Dalam baris 18 kami membuat fungsi pertama kami. Fungsi yang disebut «penulis» menampilkan penulis naskah ketika kita menyebutnya dengan argumen "-a" seperti yang Anda lihat di if pada baris 50 ~ 54. Argumen "-dan" dari baris 23 memungkinkan untuk menampilkan urutan «baris berikutnya» dengan menyandikan «\ n».

Panggilan ke noparams (baris 28 ~ 37) bertugas mengelola peristiwa yang harus terjadi ketika skrip dipanggil tanpa parameter apa pun. Kami menunjukkan, tertutup dengan benar di antara kode baris baru, pesan yang menunjukkan bahwa skrip harus dijalankan dengan dua parameter, kemudian opsi (baris 31) ditampilkan untuk digunakan Baca baca Ini meminta Anda untuk menekan "S" atau "s" jika Anda ingin menunjukkan bantuan. Di baris 32 kita secara harfiah mengatakan: 'jika jawabannya (yang datang kepada kita dalam variabel $ REPLY) berisi salah satu karakter yang huruf besar atau kecil ', kemudian (baris 33) menunjukkan baris kosong (baris 34) dan menjalankan fungsi bantuan (baris 23 ~ 26).

Fungsi nodir (baris 39 ~ 42) akan dijalankan ketika kami mendeteksi bahwa direktori tempat pencarian sedang dilakukan tidak ada.

Fungsi

Dengan ini kita sudah punya mendefinisikan semua fungsi yang diperlukan untuk menjalankan program kita, yang sebenarnya dimulai pada baris 44, memeriksa apakah parameter pertama yang diterima skrip adalah "-h", jika benar, jalankan fungsi bantuan dan keluar yang menunjukkan penghentian normal.

Jika POLA (parameter pertama seperti yang dijelaskan di baris 15) adalah "-a", penulis ditampilkan mengikuti mekanisme yang sama yang dijelaskan di paragraf sebelumnya untuk opsi "-h".

Di telepon 56 dikontrol bahwa kami tidak menerima kurang dari dua parameterDalam hal ini, fungsi noparams dijalankan, kemudian di if baris 60 kita temukan jika direktori tempat kita ingin melakukan pencarian ada, jika ada, baris kosong ditampilkan, temukan perintah dengan alamat direktori tempat kita ingin melakukan pencarian diikuti dengan pola (awal nama file yang kita cari) baris kosong baru dan menggunakan keluar $? kami mempercayakan output dari skrip kami ke hasil yang dihasilkan oleh find. Dalam kasus kondisi keberadaan direktori salah (baris 67) kita memanggil fungsi nodir dan kami keluar menunjukkan penghentian abnormal.

Eksekusi dan pengujian

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

En artikel berikut tentang Bash kita akan lihat mekanismenya gunakan parameter dalam fungsiKami juga akan melihat caranya mengartikulasikan data kembali dari mereka.

Semoga postingan ini bermanfaat bagi anda.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

      Josea dijo

    Halo,
    sangat menarik dan sangat jelas.
    Hanya sebuah catatan; $ tidak ada di baris 68 di depan variabel EXIT_BAD.
    Saya akan terus belajar pasti dengan artikel Anda.