Shell Scripts: Program Argümanlarını Okumak
Merhaba arkadaşlar. Linux Shell Script Geliştirmek diye başladığım yazı dizisinin bir diğer yazısında daha birlikteyiz. Bu yazıda, program argümanlarını okumayı göreceğiz.
Birçok program, çalışmadan önce bir takım parametreleri kullanıcıdan alır.
Bu yöntem programa esneklik kazandırır.
Örneğin dosya kopyalarken kullandığımız cp
komutu,
en yaygın kullanımında iki tane parametre alır.
Bunlardan ilki hangi dosyayı kopyalayacağıdır.
Diğeri ise o dosyayı nereye kopyalayacağıdır.
Shell scriptimizde de bu şekilde istediğimiz kadar parametre alabilmemiz mümkün.
Shell scriptlerinde, programa geçilen argümanları okuyabilmemiz için
otomatik olarak tanımlanan değişkenler vardır.
Bunların ilki $#
isimli parametredir.
Bu parametre, programa kaç tane parametre geçildiğini söyler.
Programa geçilen parametreleri ise sırasıyla şu değişkenlerden okuyabiliriz:
$1
, $2
, $3
, …
$0
parametresi ise, çalıştırdığımız programın ismini söylüyor bize.
Şimdi bir örnek verelim. Diyelim ki aşağıdaki Shell Scriptini yazdık.
#!/bin/bash
# Hello World Application 4
# Command Line Arguments
echo "There are $# parameters"
echo "Program is $0"
echo "First parameter is $1"
echo "First parameter is $2"
echo "First parameter is $3"
Bu programı helloworld ismiyle kaydettik ve chmod +x helloworld
komutuyla çalıştırılabilme yetkisini verdik.
Daha sonra bu programı ./helloworld a1 b2 c3
şeklinde çağıracak olursak, programın çıktısı aşağıdaki gibi olacak:
$ ./helloworld a1 b2 c3
There are 3 parameters
Program is ./helloworld
First parameter is a1
First parameter is b2
First parameter is c3
shift komutu
Bu komutu daha ileriki başlıklarda daha etkin kullanmayı göstereceğim
fakat şimdilik konuyla alakası olduğu için ufaktan değineyim diyorum.
shift
komutu, program argümanlarını bir sola kaydırır.
Yani $1
değişkeninde “a” değeri, $2
değişkeninde “b”, $3
değişkeninde de “c” değeri varken,
shift komutunu çalıştırırsak, $1
değişkenine “b” değeri, $2
değişkenine “c” değeri gelir.
$3
değişkeni ise kaybolur.
Bu bize döngüler yazmayı öğrendiğimiz zaman tüm parametre değerlerini $1
ile okuyabilmenin yolunu açacak.
Şimdilik basitçe bir örnekle geçiştireyim.
#!/bin/bash
# shift example
echo "Parameter 1 is $1"
shift
echo "Parameter 1 is $1"
shift
echo "Parameter 1 is $1"
shift
echo "Parameter 1 is $1"
Bu programı shiftexample
olarak kaydedip ./shiftexample a b c d e
şeklinde çalıştırdığımızda,
çıktı aşağıdaki gibi olacak:
$ ./shiftexample a b c d e
Parameter 1 is a
Parameter 1 is b
Parameter 1 is c
Parameter 1 is d
Görüldüğü gibi, verdiğimiz tüm parametreleri $1
değişkenini kullanarak okuyabildik.
Efendim bir sonraki yazımıza kadar esen kalın. Kodlu geceler.