24 Ağustos 2018 Cuma

bash kodlama - function tanımlama

Functio İsmi
Açıklaması şöyle. Çoğu programlama dili ile aynı özellikleri taşıyor.
name   A word consisting only of alphanumeric characters and
       underscores, and beginning with an alphabetic character
       or an underscore.  Also referred to as an identifier.
Ancak çoğu Linux dağıtımında çok daha farklı function isimleri kullanılabiliyor ve çalışyor. Şöyle yaparız.Function'ı çağırmak için ismini yazmak yeterli.  myfunction () şeklinde çağırmaya gerek yok.  Çıktı olarak abc::def alırız.
#!/bin/bash
function abc::def() {
    echo "${FUNCNAME[0]}"
}
abc::def
Function Kelimesi Olmadan
Parametre almasa bile parantez gerekir. 
Örnek
Şöyle yaparız
#!/bin/bash
die() {
    echo 'error: mandatory conditions not met!' >&2
    exit 1
}
value=$1
(( value > 0 )) && echo "$value > 0" || die;
(( value > 1 )) && echo "$value > 1" || die;
(( value > 2 )) && echo "$value > 2" || die;
(( value > 3 )) && echo "$value > 3" || die;
Örnek
Elimzide şöyle bir kod olsun.
do_something () {
    do it
}
Çağırmak için parantez kullanmaya gerek yok şöyle yaparız.
$ do_something () { echo 'do it'; } ; do_something
do it
Function Kelimesi İle 
Örnek
Şöyle yaparız.
function nevens {
  local sum=0
  for element in $@; do
    let evencheck=$(( element % 2 ))
    if [[ $evencheck -eq 0 ]]; then
      let sum=sum+1
    fi
  done
  echo $sum
}
Çağırmak için şöyle yaparız.
$ nevens 42 6 7 9 33
2
$ nevens 42 6 7 9 33 22
3
$ nevens {1..10..2} # 1 to 10 step 2 → odd numbers only
0
$ nevens {2..10..2} # 2 to 10 step 2 → five even numbers
5
Örnek
Şöyle yaparız.
function evencheck
{
  return $(( $1 % 2 ))
}
function nevens
{
  local -i sum=0
  for element
  do
    # `if` implicitly checks that the returned value/exit status is 0
    if evencheck "$element"
    then
      (( sum++ ))
    fi
  done
  echo "$sum"
}
Yerel Değişken Tanımlamak
Integer değişken tanımlamak için şöyle yaparız.
local -i sum=0

Hiç yorum yok:

Yorum Gönder