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.
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.