Android

Fungsi bash

bagian#1 Belajar Command Line Interface Linux (BASH) - 17 perintah dasar

bagian#1 Belajar Command Line Interface Linux (BASH) - 17 perintah dasar

Daftar Isi:

Anonim

Fungsi Bash pada dasarnya adalah serangkaian perintah yang dapat dipanggil berkali-kali. Tujuan suatu fungsi adalah untuk membantu Anda membuat skrip bash Anda lebih mudah dibaca dan untuk menghindari penulisan kode yang sama berulang-ulang.

Dibandingkan dengan sebagian besar bahasa pemrograman, fungsi Bash agak terbatas. Dalam tutorial ini, kami akan membahas dasar-dasar fungsi Bash dan menunjukkan kepada Anda bagaimana menggunakannya dalam skrip shell Anda.

Deklarasi Fungsi Bash

Sintaks untuk mendeklarasikan fungsi bash sangat sederhana. Mereka dapat dideklarasikan dalam dua format berbeda:

  1. Format pertama dimulai dengan nama fungsi, diikuti oleh tanda kurung. Ini adalah format yang lebih disukai dan lebih banyak digunakan.

    function_name () { commands }

    Versi baris tunggal:

    function_name () { commands; }

    Format kedua dimulai dengan kata function reserved diikuti oleh nama fungsi.

    function function_name { commands }

    Versi baris tunggal:

    function function_name { commands; }

Beberapa poin yang perlu diperhatikan:

  • Daftar perintah antara kurung kurawal {} adalah badan fungsi. Kurung kurawal yang mengelilingi fungsi tubuh harus dipisahkan dari tubuh oleh spasi atau baris baru. Mendefinisikan fungsi tidak menjalankannya. Untuk memanggil fungsi bash, cukup gunakan nama fungsi. Perintah di antara kurung kurawal dieksekusi setiap kali fungsi dipanggil dalam skrip shell. Definisi fungsi harus ditempatkan sebelum panggilan ke fungsi. Ketika menggunakan fungsi "dipadatkan" baris tunggal, titik koma ; harus mengikuti perintah terakhir dalam fungsi. Anda harus selalu berusaha menjaga agar nama fungsi tetap deskriptif.

Untuk memahami ini lebih baik, lihat contoh berikut:

~ / hello_world.sh

#!/bin/bash hello_world () { echo 'hello, world' } hello_world

Mari kita menganalisis kode baris demi baris:

  • Pada baris 3 kita mendefinisikan fungsi dengan memberinya nama, dan membuka kurung kurawal { yang menandai awal dari tubuh fungsi. Baris 4 adalah badan fungsi. Function body dapat berisi banyak perintah dan deklarasi variabel. Baris 5 , kurung kurawal penutup } , menentukan akhir dari fungsi hello_world baris 7 kita menjalankan fungsi. Anda dapat menjalankan fungsi sebanyak yang Anda butuhkan.

Jika Anda menjalankan skrip, itu akan mencetak hello, world .

Lingkup Variabel

Variabel global adalah variabel yang dapat diakses dari mana saja dalam skrip terlepas dari cakupannya. Di Bash, semua variabel secara default didefinisikan sebagai global, bahkan jika dideklarasikan di dalam fungsi.

Variabel lokal dapat dideklarasikan di dalam tubuh fungsi dengan kata kunci local dan hanya dapat digunakan di dalam fungsi itu. Anda dapat memiliki variabel lokal dengan nama yang sama di fungsi yang berbeda.

Untuk menggambarkan lebih baik bagaimana ruang lingkup variabel bekerja di Bash, mari kita pertimbangkan sebuah contoh:

~ / variable_scope.sh

#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"

Script dimulai dengan mendefinisikan dua variabel global var1 dan var2 . Kemudian fungsi yang menetapkan variabel lokal var1 dan memodifikasi variabel global var2 .

Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D

Dari hasil di atas, kita dapat menyimpulkan bahwa:

  • Jika Anda menetapkan variabel lokal di dalam fungsi tubuh dengan nama yang sama dengan variabel global yang ada, itu akan didahulukan dari variabel global. Variabel global dapat diubah dari dalam fungsi.

Nilai Pengembalian

Tidak seperti fungsi dalam bahasa pemrograman "nyata", fungsi Bash tidak memungkinkan Anda untuk mengembalikan nilai saat dipanggil. Ketika fungsi bash selesai, nilai kembalinya adalah status pernyataan terakhir yang dieksekusi dalam fungsi, 0 untuk keberhasilan dan angka desimal bukan nol dalam rentang 1 - 255 untuk kegagalan.

Status pengembalian dapat ditentukan dengan menggunakan kata kunci return , dan ditetapkan ke variabel $? . Pernyataan return mengakhiri fungsi. Anda dapat menganggapnya sebagai status keluar fungsi.

~ / return_values.sh

#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?

some result 55

Untuk benar-benar mengembalikan nilai arbitrer dari suatu fungsi, kita perlu menggunakan metode lain. Opsi paling sederhana adalah menetapkan hasil fungsi ke variabel global:

~ / return_values.sh

#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result

some result

Pilihan lain yang lebih baik untuk mengembalikan nilai dari suatu fungsi adalah mengirim nilai ke stdout menggunakan echo atau printf seperti yang ditunjukkan di bawah ini:

~ / return_values.sh

#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result

some result

Alih-alih hanya menjalankan fungsi yang akan mencetak pesan ke stdout, kami menugaskan output fungsi ke variabel func_result menggunakan substitusi perintah $() . Variabel nanti dapat digunakan sesuai kebutuhan.

Melewati Argumen ke Fungsi Bash

Untuk meneruskan sejumlah argumen ke fungsi bash cukup letakkan tepat di belakang nama fungsi, dipisahkan dengan spasi. Ini adalah praktik yang baik untuk mengutip dua kali argumen untuk menghindari salah mengartikan argumen dengan spasi di dalamnya.

  • Parameter yang diteruskan adalah $1 , $2 , $3 $n , sesuai dengan posisi parameter setelah nama fungsi. Variabel $0 dicadangkan untuk nama fungsi. Variabel $# menyimpan jumlah parameter posisi / argumen yang diteruskan ke function $* variabel $* dan $@ menampung semua parameter posisi / argumen yang diteruskan ke fungsi.
    • Ketika dikutip ganda, "$*" meluas ke string tunggal yang dipisahkan oleh spasi (karakter pertama IFS) - "$1 $2 $n" . Ketika dua kali dikutip, "$@" memperluas ke string yang terpisah - "$1" "$2" "$n" .Ketika tidak dikutip ganda, $* dan $@ adalah sama.

Berikut ini sebuah contoh:

~ / passing_arguments.sh

#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"

Hello Joe

Kesimpulan

Fungsi Bash adalah blok kode yang dapat digunakan kembali yang dirancang untuk melakukan operasi tertentu. Setelah ditentukan, fungsi dapat dipanggil beberapa kali dalam sebuah skrip.

Anda mungkin juga ingin membaca tentang cara menggunakan fungsi Bash untuk membuat perintah pintas yang mudah diingat untuk perintah yang lebih lama.

terminal bash