Lewati ke isi

Functions

Functions adalah merupakan sebuah metode dimana script kode kita disimpan di dalamnya dan bisa kita ambil sebanyak yang kita inginkan. Oke lalu bagaimana dengan struktur dari function di shell scripting, nah seperti inilah strukturnya :

function name(){
    Command
}
Oke disini nama function itu ditandai dengan name nah bukti bahwa itu function ditandai dengan kata function, nah ada yang unik dari si shell scripting dimana ketika kita membuat function kita bisa lakukan tanpa kata function di dalam script sehingga kita bisa langsung membuat namanya, contohnya seperti ini

nama(){
    Command
}
Loh heh, semudah itukah? enak banget dong, ya itulah enaknya shell scripting dimana kita bisa melakukan sesimple mungkin, lalu bagaimana dengan contohnya? oke kita ambil contoh simpel aja yang pertama itu tentang penentuan nilai lebih besar dengan struktur yang pertama , kedua kita buat contoh tentang bilangan genap dengan struktur yang kedua, oke kita buat contoh pertama

function isGt(){
    echo -e "Masukan Angka Pertama: \c"
    read angka1

    echo -e "Masukan Angka Kedua: \c"
    read angka2
    if [[ $angka1 -gt $angka2 ]]
    then
        echo "Angka Terbesar : $angka1"
    else
        echo "Angka Terbesar : $angka2"
    fi
}
isGt
Oya saya lupa jelaskan untuk memanggil file kalian cukup tulis nama funtionnya saja contoh diatas namanya isGt maka cara manggil function cukup isGt saja, dan outputnya akan seperti ini

Masukan Angka Pertama: 10
Masukan Angka Kedua: 20
Angka Terbesar : 20

Next kita buat untuk yang kedua dimana kita membuat dengan looping dan mencari angka genap dengan struktur seperti contoh kedua

genap(){
    for i in {1..50}
    do
        if (( $i%2 == 0 ))
        then
            echo "Ini adalah Genap : $i"
        else
            echo ""
        fi
    done
}
genap

Function Variabel

Function variabel ialah sebuah functions yang diikuti dengan variabel. Contoh seperti ini function ganjil memiliki variabel isNum dan dia mengikuti dari function yang ada di ganjil. Bagaimana si bang? sepertinya ribet banget, contohnya strukturnya seperti ini

variabel=2
function name(){
    Command
}
name
Nah seperti diataslah contohnya dimana si function akan mengambil variabel diatasnya dan dapat mengolah data tersebut didalam functions
isNum=50
function ganjil(){
    for (( i=0; i<=isNum; i++))
    do
        if (( $i%2 != 0 ))
        then
            echo "Angka Ganjil : $i"
        else
            echo
        fi
    done
}
ganjil

Function Pass Parameter

Oke, function pass parameter ialah merupakan metode function yang diikuti oleh argumen yang kita inginkan, biasanya ketika tidak diikuti argumen function ini akan menjadi error. Lalu bagaimana function pass parameter di shell scripting. Oke sebelum berlanjut, sedikit informasi aja sebenarnya metode ini tidak terlalu berguna ketika di production karena shell scripting sendiri berfungsi untuk membuild sebuah sistem melalui command yang ada

function isFunctionPassParameter(){
    echo "Hello $1"
}
isFunctionPassParameter "Kiyo"
Pertanyaanya, apakah bisa dijalankan dengan dua parameter atau lebih ?. Bisa saja kalian tinggal tambahkan $2 $3 dan seterusnya sebanyak parameter yang kalian inginkan, contohnya seperti ini

function isMoreFunctionPassParameter(){
    echo "Namaku $1 $2"
}
isMoreFunctionPassParameter "Ahmad" "Subarjo"

Function Return Value

Oke sama dibahasa pemograman lainnya, di shell scripting terdapat return value juga, dimana fungsinya juga sama untuk mengembalikan data yang ada. Namun di shell scripting cara memanggilnya itu unik dengan menggunakan $?, tetapi secara fungsional tetap saja return value ini sama dengan pass parameter dimana jarang ada yang memakainya. Oke untuk contoh return value di function seperti ini

function isReturnValue(){
    echo "Hello World"
    return 55
}
isReturnValue
res:$?
echo $res
Uniknya di shell scripting ini untuk return value harus berupa numeric / angka maka akan error dan menghasilkan pesan return: Kiyo: numeric argument required ketika di running. Oke mungkin untuk return seperti ini aja, next kita bahas function recursive

Function Recursive

Oke sebelum membahas ke pokok materi kita bahas dulu apa si yang dimaksud dengan recursive. Recursive ialah sebuah metode dimana memanggil sebuah progam ke progam lainnya dengan cara memanggil diri sendiri. Nah sama dengan materi function recursive kali ini dimana terdapat dua function yang salah satu functionnya memanggil function lain, lalu memanggil function itu sendiri. Piye si, kok ruwet banget, oke kita kasih contoh flownya seperti ini

function isFunction1(){
    echo "Hello World"
    isFunction2 "Kiyo"
}
function isFunction2{
    echo "Hay my name is $1"
}
isFunction1
Menarik bukan disini isFunction1 menyimpan isFunction2 dan ketika di running manggilnya isFunction1 maka hasilnya dari isFunction1 dan isFunction2, oke coba kita buat progam pengecekan prime number dimana function dua berperan untuk inputanya

function isResult(){
    isPrime
    value=`factor $isNumber | wc -w`
    if [[ $value -eq 2 ]]
    then
        echo "$isNumber bilangan prima"
    else
        echo "$isNumber bukan bilangan prima"
    fi
}
function isPrime(){
    echo -e "Enter Number : \c"
    read isNumber
}
isResult
Oke mungkin untuk materi recursive function sampai disini saja next kita bahas apa itu local variables

Local Variables

Local Variables adalah sebuah metode dimana variabel ini hanya bisa diakses oleh lokal saja atau dalam function saja, contohnya semisalnya kita memiliki nama function isName nah di isName ini terdapat sebuah variabel name yang dibuat lokal sehingga yang bisa akses ini adalah function saja. Oke lalu bagaimana contoh dari yang bukan lokal bang, begini contohnya

function isName(){
  name=$1
  echo "My Name : $name"
}
name="Dias"
echo "My Name : $name => Before"
isName Kiyo
echo "My Name : $name => After"

Maka output yang before itu adalah Dias, lalu print Kiyo, dan yang after itu juga Kiyo

My Name : Dias => Before
My Name : Kiyo
My Name : Kiyo => After

Oke lalu contoh lokal nya itu bisa ditandai dengan kata local sebelum variabelnya, contoh seperti ini

function isName(){
  local name=$1
  echo "My Name : $name"
}
name="Dias"
echo "My Name : $name => Before"
isName Kiyo
echo "My Name : $name => After"

Maka output yang before itu adalah Dias, lalu print Kiyo, dan yang after itu juga Dias. Kenapa bisa begitu mas? ya karena si variabel name telah di setting local yang dimana hanya bisa diakses dengan function saja

My Name : Dias => Before
My Name : Kiyo
My Name : Dias => After

Last update: September 23, 2022
Dibuat: September 23, 2022