Bash-Scripting – “:” Colon kullanımı

Null command, yani “:” colon işareti “NOP” yani “No op, do nothing” anlamına gelir. Shell için bunun anlamı “true”dur.

Şu betik;

while :
do
  operation-1
  opereation-2
  .....
  operation-n
done

Şununla aynı anlamlıdır. Yukarıda “true” için “:” kullanılmıştır.

  while true
  do
    ...
    ..
    ..
  done

If/then için şu şekilde kullanılmaktadır.

  if condition
    then :  #hiçbir şey yapma ve burayı atla
    else :  # değilse aşağıdakileri yap
        else-operasyonları
  fi

Eğer”:” kolon ile “>” redirection operatörü birlikte kullanılırsa, dosya üzerinde
permission değişikliği yapılmadan dosya sıfır uzunluğa indirgenir. İçi tamamen boşaltılır.
Eğer böyle bir dosya önceden yoksa, oluşturulur. Bu işlem sadece normal dosyalar için geçerlidir.
Pipe, symlinks ve özel dosyalar için geçerli değildir.

: > /home/hakan/hakan.txt  #hakan.txt dosyası boyutu sıfırlanır. Dosya artık boştur.

Aynı şekilde “:” işareti bir “field seperator” yani ayraç olarak da kullanılabilir.
Özellikle de /etc/passwd ve $PATH değişkeni içerisinde görülür.

hakan@crtx:~/nixlab/repos/common-scripts$ echo $PATH
/home/hakan/bin:/home/hakan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

“:” kolon bazen bir fonksiyon ismi olarak da kullanılabilir.

: ()
  {
    echo "bu fonksiyonun ismi "$FUNCNAME" dir"
    # peki neden bir fonksiyona : şeklinde bir isim verilir?
    # çünkü bu kodunuzun karmaşık görünmesini sağlayan bir yöntemdir. 
  }

 :
 # bu fonksiyonun adı : dır.

“:” kolon bazen boş bir fonksiyon tanımlamak için de kullanılır.

not_empty ()
{

	:
} #  fonksiyon sadece bir null komut taşır.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s