- 24 Mar 2019
- 172
- 0
Shell Scripts-1
Merhaba bu konuda sizin için Shell Scripts nasıl programlamayı ele alıp sizlere örnekler ile anlatmaya çalışacağım. Haydi başlayalım;
ilk olarak linux işletim sistemi üstünden anlatacağım. Başlamak için yapmamız gereken bir kaç işlem var.
ilk olarak linux işletim sistemi üstünden anlatacağım. Başlamak için yapmamız gereken bir kaç işlem var.
Kod:
1) cat /etc/shells # bu komut ile makinadaki shell scripts dillerini görmenizi sağlıyor
2) which bash #bu komut bizim bash'in yerini göstermesini sağlıyor
3) touch hello.sh #bu komut dosya oluşturmamızı sağlıyor desktop a gidip oluşturun
4) ls -al #bu komut bizim bulunduğumuz konumdaki dosyaların izinlerini yani yetkileri gösteriyor
5) chmod u+x hello.sh #bu komutta izinlerimiz veriyoruz yazdığımız kodu çalıştırmak için(run-execute)
6) nano hello.sh #komut satırında dosyanın içerisine yazmamızı sağlayan komuttur
7) ./hello.sh #yazdığımız kodu çalıştırmaya yarayan komuttur
Bu işlemlerin ardından artık kodumuzu yamaya hazırız demektir.
ilk olarak ekrana merhaba diyelim.
ilk olarak ekrana merhaba diyelim.
Kod:
#!/bin/bash ->bu satır bizim bash konumumuzu belirtir bunu yazmamız gerekiyor
# -> yorum yazmak için kullanılır
echo "Hello world" ->echo komutu ekrana basma işlemini yapmaktadır.
Bir Linux sisteminde iki tür değişken vardır. Biri sistem değişkenleri ve diğeri kullanıcı tanımlı değişkenler. Bir değişken büyük harflerden oluşuyorsa, o zaman büyük olasılıkla - ancak zorunlu değildir - bir sistem değişkenidir. Bir örnek ile göz atalım;
Kod:
#!/bin/bash
echo "shell ismimiz $BASH"
echo "shell versiyonumuz $BASH_VERSION"
echo "Ana dizinimiz $HOME"
echo "Mevcut çalışma dizini $PWD"
#sistem komutlarını çalıştırır ve ekrana basar
name="veli"
#burada ise bir değişken tanımlamış oluyoruz
echo $name -> isimi direk basmak için başına $ işareti koyuyoruz
echo "isim $name" -> yazının içinde değişken bastırmayı görüyorsunuz
Kullanıcıdan girdi alalım.
Kod:
#!/bin/bash
echo "birden cok isim girin: "
read name1 name2 name3 -> bu satırda hem değişkenleri tanımlıyoruz hemde okuyoruz
echo "isimler: $name1, $name2, $name3" -> aldığımız isimleri ekrana bastırıyoruz
Ancak, varsayılan ayırıcı karakterin boşluk olduğuna dikkat edin, bu nedenle yukarıdaki örneğe üçten fazla dize veremezsiniz. Örneğin, bu "3'ten fazla kelime içeren bir dize", aslında üç dize olarak çözümlenir. İlki bu. İkincisi. Ve geri kalanı dize tırnak içine alınır, bu nedenle tek bir dize olarak yorumlanır ve "name3" değişkenine atanır.Ayrıca -p seçeneği aracılığıyla bir echo ifadesi ile bir okuma ifadesini birleştirebilirsiniz.
Kod:
#!/bin/bash
read -p 'username: ' user_name
read -sp 'password: ' user_pass
echo "Username is $user_name"
echo "Password is $user_pass"
Yukarıdaki örnekte, "read" ilk önce tırnak içine alınmış dizgeyi yazdırır, ardından kullanıcıdan gelen girdiyi bekler. Kullanıcı "-s" seçeneği ile yazarken de giriş dizesini gizleyebilirsiniz. Ayrıca "-a" seçeneği ile kullanıcıdan çok sayıda girdi alabilirsiniz. -bir seçenek verilen dizgeyi ayrıştırır ve boşlukla ayrılmış tüm kelimeleri belirtilen değişkene bir dizi olarak yerleştirir.
Kod:
#!/bin/bash
echo "isim girin: " read -a names
echo "Names: ${names[0]}, ${names[1]}, ${names[2]}"
Okuma komutu herhangi bir argüman olmadan çağrılırsa, komutun girdisine "$REPLY" değişkeni üzerinden ulaşılabilir.
Komut satırında ./hello.sh diye çalıştırılırken aşağıdaki komut sayesinde program başlamadan girdi almamızı sağlıyor.
Kod:
#!/bin/bash
# kullanıcıdan 3 adet argüman alınır
echo $1 $2 $3
echo "komut= $0" -> 0 index komut eşittir
#programı çalıştırırken ./programınismi.sh ali ayşe fatma diye çalıştırmamızı sağlıyor ve 0 index=./programınismi.sh eşit oluyor.
# bu kısımda aynı işlem liste içerisine atılarak yapılıyor
args=("$@") - >liste oluşturuyoruz
echo ${args[1]} ${args[2]} ->listeye eleman alıyoruz
echo $@ -> bütün listeyi basmamızı sağlıyor
echo $# -> listedeki argüman sayısını basar