GNU/Linux >> Belajar Linux >  >> Linux

Fungsi Bash

Fungsi Bash pada dasarnya adalah seperangkat perintah yang dapat dipanggil berkali-kali. Tujuan dari sebuah fungsi adalah untuk membantu Anda membuat skrip bash Anda lebih mudah dibaca dan untuk menghindari penulisan kode yang sama berulang kali. Dibandingkan dengan kebanyakan bahasa pemrograman, fungsi Bash agak terbatas.

Dalam tutorial ini, kami akan membahas dasar-dasar fungsi Bash dan menunjukkan cara menggunakannya dalam skrip shell Anda.

Mendefinisikan Fungsi Bash #

Sintaks untuk mendeklarasikan fungsi bash sangatlah mudah. Fungsi dapat dideklarasikan dalam dua format berbeda:

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

    function_name () {
      commands
    }

    Versi satu baris:

    function_name () { commands; }
  2. Format kedua dimulai dengan kata yang dicadangkan function , diikuti dengan nama fungsi.

    function function_name {
      commands
    }

    Versi satu baris:

    function function_name { commands; }

Beberapa hal yang perlu diperhatikan:

  • Perintah di antara kurung kurawal ({} ) disebut badan fungsi. Kurung kurawal harus dipisahkan dari isi dengan spasi atau baris baru.
  • Mendefinisikan suatu 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 apa pun ke fungsi tersebut.
  • Saat menggunakan fungsi "padat" satu baris, tanda titik koma ; harus mengikuti perintah terakhir dalam fungsi.
  • Selalu usahakan agar nama fungsi Anda tetap deskriptif.

Untuk lebih memahaminya, 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. Tanda kurung kurawal { menandai awal dari badan fungsi.
  • Baris 4 adalah fungsi tubuh. Badan fungsi dapat berisi beberapa perintah, pernyataan, dan deklarasi variabel.
  • Baris 5 , kurung kurawal penutup } , mendefinisikan akhir dari hello_world fungsi.
  • Sejajar 7 kita menjalankan fungsi tersebut. Anda dapat menjalankan fungsi tersebut sebanyak yang Anda butuhkan.

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

Cakupan Variabel #

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

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

Untuk mengilustrasikan dengan lebih baik bagaimana ruang lingkup variabel bekerja di Bash, mari pertimbangkan contoh ini:

~/variables_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 . Lalu ada fungsi yang menetapkan variabel lokal var1 dan memodifikasi variabel global var2 .

Jika Anda menjalankan skrip, Anda akan melihat output berikut:

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

Dari output di atas, kita dapat menyimpulkan bahwa:

  • Bila variabel lokal disetel di dalam badan fungsi dengan nama yang sama dengan variabel global yang ada, variabel tersebut akan didahulukan daripada variabel global.
  • Variabel global dapat diubah dari dalam fungsi.

Mengembalikan Nilai #

Tidak seperti fungsi dalam bahasa pemrograman "nyata", fungsi Bash tidak mengizinkan Anda mengembalikan nilai saat dipanggil. Ketika fungsi bash selesai, nilai kembaliannya adalah status dari 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 return kata kunci, dan ditugaskan ke variabel $? . return pernyataan 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

Opsi lain yang lebih baik untuk mengembalikan nilai dari suatu fungsi adalah dengan mengirim nilai ke stdout menggunakan echoor printf seperti gambar 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 menetapkan output fungsi ke func_result variabel menggunakan $() substitusi perintah. Variabel tersebut nantinya dapat digunakan sesuai kebutuhan.

Meneruskan Argumen ke Fungsi Bash #

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

  • Parameter yang diteruskan adalah $1 , $2 , $3$n , sesuai dengan posisi parameter setelah nama fungsi.
  • $0 variabel dicadangkan untuk nama fungsi.
  • $# variabel menampung jumlah parameter/argumen posisi yang diteruskan ke fungsi.
  • $* dan $@ variabel menampung semua parameter/argumen posisi yang diteruskan ke fungsi.
    • Saat kutip ganda, "$*" diperluas ke string tunggal yang dipisahkan oleh spasi (karakter pertama IFS) - "$1 $2 $n" .
    • Saat kutip ganda, "$@" diperluas untuk memisahkan string - "$1" "$2" "$n" .
    • Jika tidak dikutip ganda, $* dan $@ adalah sama.

Ini contohnya:

~/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 didefinisikan, fungsi tersebut dapat dipanggil beberapa kali dalam sebuah skrip.

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

Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.


Linux
  1. Cara Membuat dan Memanggil Fungsi di Bash

  2. 9 Fungsi Built-in Awk yang Kuat untuk Numerik

  3. menjalankan skrip php (fungsi php) di linux bash

  1. Fungsi Bash untuk menemukan pola pencocokan file terbaru

  2. Output pipa ke fungsi bash

  3. Menggunakan jam tangan untuk menjalankan fungsi berulang kali di Bash?

  1. Fungsi Dalam Variabel Shell?

  2. Bash Seri Pemula #9:Menggunakan Fungsi di Bash

  3. Manipulasi fungsi Bash dijelaskan