- 24 Mar 2019
- 172
- 0
Shell Scripts-2
Merhaba 2.dersimiz ile karşınızdayım. Haydi başlayalım;
Bash'deki en temel dallanma ifadesi if ifadesidir. Sözdizimi yeni başlayanlar için korkutucu görünse de, temelde C, C ++, Java vb. Gibi diğer programlama dilleriyle aynıdır. Köşeli parantezlerin önündeki ve arkasındaki boşluklara dikkat edin. Shell boşluktan bağımsız değildir, bu nedenle bu boşlukları doğru yerlere koyduğunuzdan emin olmanız gerekir. Aksi takdirde, her boşluk hatası için bir sözdizimi hatası alırsınız.
Bash'deki en temel dallanma ifadesi if ifadesidir. Sözdizimi yeni başlayanlar için korkutucu görünse de, temelde C, C ++, Java vb. Gibi diğer programlama dilleriyle aynıdır. Köşeli parantezlerin önündeki ve arkasındaki boşluklara dikkat edin. Shell boşluktan bağımsız değildir, bu nedenle bu boşlukları doğru yerlere koyduğunuzdan emin olmanız gerekir. Aksi takdirde, her boşluk hatası için bir sözdizimi hatası alırsınız.
Kod:
#!/bin/bash
if [ koşul ]; then -> eğer anlamına gelmektedir
cümle -> buraya işeme alacağınız cümleleri yazabilirsiniz
fi -> bitirmek için kullanılır
#----------------------------aşağıdaki farklı bir yazım türüdür
if [ koşul ]
then
cümle
fi
Operatörler
-eq : eşittir
-ne : eşit değildir
-gt : büyüktür
-ge : büyüktür veya eşittir
-lt : küçüktür
-le : küçüktür veya eşittir
< : küçüktür (çift parantez içinde)
<= : küçüktür veya eşittir (çift parantez içinde)
> : büyüktür (çift parantez içinde)
>= : büyüktür veya eşittir (çift parantez içinde)
Operatörler yukarıdaki maddelerle sınırlı değildir. Operatörlerin tam listesini Linux Dokümantasyon Projesi web sitesinde bulabilirsiniz.
-ne : eşit değildir
-gt : büyüktür
-ge : büyüktür veya eşittir
-lt : küçüktür
-le : küçüktür veya eşittir
< : küçüktür (çift parantez içinde)
<= : küçüktür veya eşittir (çift parantez içinde)
> : büyüktür (çift parantez içinde)
>= : büyüktür veya eşittir (çift parantez içinde)
Operatörler yukarıdaki maddelerle sınırlı değildir. Operatörlerin tam listesini Linux Dokümantasyon Projesi web sitesinde bulabilirsiniz.
Kod:
#!/bin/bash
count=10
if [ $count -eq 9 ]
then
echo "koşul dogru"
fi
if (($count > 9))
then
echo "koşul dogru"
fi
#---------------ikinci örnek----------------------
word="abc"
if [ $word == "abc" ] # tek eşittir işareti de geçerlidir
then
echo "koşul dogru"
fi
#---------------üçüncü örnek----------------------
word=a
if [[ $word < "b" ]]
then
echo "Condition is true"
else
echo "Condition is false"
fi
#---------------dörtüncü örnek----------------------
word=a
if [[ $word == "b" ]]
then
echo "harf b eşit"
elif [[ $word == "a" ]] ->else if anlamındadır bitmediği için fi konmaz fi bitim noktasına konur
then
echo "harf a eşit"
else
echo "harf a yada b eşit degil"
fi -> bitim noktası
Dosya işlemleri
Dosyalarla uğraşmak, Linux komut dosyası yazmanın çok önemli bir parçasıdır. İçin çok büyük miktarda sorgu seçeneği vardır bash'da dosya test işlemleri. Tam listeyi Linux Dokümantasyon Proje web sitesinde bulabilirsiniz.
Kod:
#!/bin/bash
echo -e "dosya adını girin: \c"
read fileName
# ismi kontrol et
if [ -e $fileName ]
then
echo "$fileName bulundu."
else
echo "$fileName bulunamadı"
fi
# Normal dosyayı kontrol edin: -f
# Dizinleri kontrol edin: -d
#-----------------ikinci örnek------------------
echo -e "dosya ismini girin \c"
read fileName
if [ -f $fileName ]
then
if [ -w $fileName ] -> if içinde if
then
echo "Metin yazın. Çıkmak için CTRL-D'ye basın. "
cat >> $fileName
else
echo "Yazmaya izniniz yoktur"
fi
else
echo "$fileName does not exist."
fi
BONUS
Hesap Makinesi
Kod:
#!/bin/bash
if [ $# -ne 3 ]
then
echo "3 adet argüman girin!!"
exit 1
fi
num1=$1
num2=$2
operator=$3
if [[ $operator == "+" ]]
then
echo "Sonuc: $(( num1 + num2 ))"
elif [[ $operator == "-" ]]
then
echo "Sonuc: $(( num1 - num2 ))"
elif [[ $operator == "*" ]]
then
echo "Sonuc: $(( num1 * num2 ))"
elif [[ $operator == "/" ]]
then
echo "Sonuc: $(( num1 / num2 ))"
elif [[ $operator == "%" ]]
then
echo "Sonuc: $(( num1 % num2 ))" else
echo "Hatalı operator secimi."
fi
Çalışma örneği:
Kod:
$ ./test.sh 10 2 \&
Hatalı operator secimi.
$ ./test.sh 10 2 +
Sonuc: 12
$ ./test.sh 10 2 \*
Sonuc: 20