Bash ScriptingYazılım

Temel Bash Script

Merhaba,

Bu yazının içeriğinde linux tabanlı işletim sistemlerinde kullanılan Bash komut yorumlayıcısı ve Bash script hakkında kısaca bir bilgilendirme yer almaktadır. Aynı zamanda en çok kullanılan ifadelerin yer aldığı bir not niteliğindedir.

Bash linux sistemlerde komut satırına yazılan komutların yorumlanmasını sağlayan yorumlayıcıdır.

Bash Script ise bash komutlarından oluşan çalıştırılabilir bir dosyayı ifade etmektedir. Bir çok yeteneğe sahip olan Linux komut satırı komutlarını bir arada kullanabilmek, bazende uzun zaman alan ve karmaşık komutların sıralı olarak kullanılmasıyla yapılabilen işlemlerşi kolaylaştırmak ve otomatize etmek için kullanabiliriz. Örneğin Linux sistemimiz üzerine bir sunucu kurmak veya bir paket kurup yapılandırmak istiyorsak bunu komutlar sayesinde yapmaktayız. Fakat sürekli sanal makinelerle uğraşan ve sürekli yeni makineler kuran birisiyseniz bu noktada kurulum ve konfigürasyon işlemlerinizi otomatize edebilirsiniz.

Shebang (#!)

  • Programın ilk satırı önemlidir. Bu kısma (#!) shebang adı verilir. shebang ile yorumlayıcı yolu belirtilir. Aşağıdaki örnekler incelenebilir.
    • #!/bin/bash
    • #!/bin/sh
    • #!/bin/php

Arka Plan Değişkenleri – Argüman vs.

  • Yazdığımız script içerisinde tanımladığımız değişkenlerden hariç olarak arka plandada bir takım değişkenler tutulur.
    • $0 : Scriptin Adı
    • $1 – $9 : Komut satırından scripte verilen argümanlar. Sırasıyla
    • $# : Scripte dışarıdan gönderilen toplam argüman sayısı
    • $ :* Scripte dışarıdan gönderilen argümanların tamamı

Çıktı Sonucunu Değişkene Atamak

  • Ters tek tırnak iiçerisine alınan komutlar belirtilen değişkene atanır. #!/bin/bash result= ifconfig echo Ag Bilgisi: $result

Kullanıcı Inputları

  • Bilgi mesajı vermeden doğrudan giriş alıp input değişkenine atamak için;
    • read input
  • İnput mesajı yazdırıp, giriş için aynı satırın sonundan imleci devam ettirmek için readp komutu kullanılabilir. Bu sayede yazım diziliminin tutarlı şekilde kalması sağlanabilir.
  • Kullanıcı tarafındna girilen metnin görünmemesi için (Parola bilgisi alırken)
    • read -sp

Değişkenler

  • Değişkene erişmek için $ kullanılır.
  • Değişken uzunluğunu almak için;
    • ${#değişken_adi}
  • Yalnız okunabilir değişken tanımlamak için;
    • readonly isim=”hasanbaskin”
  • Dizi tanımlamak için;
    • sehirler(“antalya”, “bursa”, “rize”, “istanbul”)
    • ${sehirler[2]} ⇒ 3.sehir bilgisine erişmek için kullanılır..

Sistem Değişkenlerine Erişmek

  • env komutu ile erişilebilir olan sistem değişkenleri listelenir.
  • Örnek olarak;
    • $HOME
    • $USER

Operatörler

Aritmatik Operatörler

  • -eq : Eşittir
  • -ne : Eşit Değildir
  • -gt : Büyüktür
  • -ge : Büyük eşittir
  • -lt : Küçüktür
  • -le : Küçük eşittir

Metinsel Operatörler

  • = Eşittir
  • != Eşit Değildir

Mantıksal Operatörler

  • ! Değildir
  • -a : Ve
  • -o : Veya

Dosya Dizin Operatörleri

  • -e : Dosya var mı ?
  • -f : Dosya özel mi sıradan mı?
  • -r : Dosya okunabilir mi?
  • -w : Yazılabilir mi?
  • -x : Çalıştırılabilir mi ?
  • -d : Dosya mı dizin mi ?

Örnek Mini Scriptler

Terminal üzerinden argüman almak:

#!/bin/bash

echo "Selam Dunyali"

if [ "$1" = "" ]; then
	echo "Arguman yok !!"
else
	echo "$1"
fi

Switch-Case Yapısı:

#!/bin/bash

clear

echo "1.Ekrani temizle.."
echo "2.Sistemdekileri goster.."
echo "3.Dizindekileri göster.."
echo "4)ip adresimi goster.."

echo -n "Secenegi giriniz: "
read secenek

case $secenek in
1)clear;;
2)w;;
3)ls -la;;
4)ifconfig;;
*)echo "Hatali secenek";;

esac


Array – Dizi Yapısı:

#!/bin/bash

digits=$((RANDOM%7))
colors=(mavi kirmizi sari turuncu siyah beyaz mor lacivert)

degisken=${colors[$digits]}
echo "$degisken"

Dosya Sorgulama:

#!/bin/bash

if [ -f /home/hbn/Desktop/My_Codes/Bash/Kitchen/case_yapisi.sh ]
	then
		echo "dosya var"
	else
		echo "dosya yok"
fi

For – Do Döngü Yapısı:

#!/bin/bash

dizinlistele(){
for a in *.sh 
do
file $a
done
}

agaclarlistele(){
for agac in elma armut cam sogut visne
do
echo $agac
done
}

echo "1.dizindeki dosya tiplerini listele.."
echo "2.agaclari yazdir.."
echo -n "Secenek : "
read deger


if [ $deger -eq 1 ]
then 
dizinlistele
fi

if (($deger==2))
then
agaclarlistele
fi

For Döngüsü Random Sayı Üreteci:

#!/bin/bash

echo -n "Bir sayi giriniz.."
read sayi

for ((x=1; x<=$sayi; x++))
do
	rastgele=$((RANDOM%100))
	echo "$rastgele senin sayin dostum.."
done

Temel İnput İşlemi:

#!/bin/bash


echo "0 ile 20 arasinde bir sayi giriniz"
read deger
if [ $deger -lt 10 ]
then
echo "Secilen sayi tek basamakli."
else
echo "Secilen sayi iki basamakli."
fi

While Yapısı:

#!/bin/bash

deger=0
while [ $deger -lt 100 ]
do
deger=$((deger+1)) # (( ve )) işaretleri arasına matematiksel işlem getirilebilir. bash kabuğuna özeldir.
echo $deger
done

Teşekkür ederim. İyi günler dilerim..

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir