- 24 Mar 2019
- 172
- 0
Shell Scripts-3
Merhaba 3.dersimiz ile karşınızdayım. Haydi başlayalım;
Case İfadesi (switch)
Geçen derste verdiğim bonus üstünden size aktaracağım;
Kod:
#!/bin/bash
if [ $# -ne 3 ]
then
echo "3 adet argüman girin!!"
exit 1
fi
num1=$1 num2=$2
operator=$3
case $operator in
"+" )
echo "Sonuc: $(expr $num1 + $num2)" ;;
"-" )
echo "Sonuc: $(expr $num1 - $num2)" ;;
"*" )
echo "Sonuc: $(expr $num1 * $num2)" ;;
"/" )
echo "Sonuc: $(expr $num1 / $num2)" ;;
"%" )
echo "Sonuc: $(expr $num1 % $num2)" ;;
* )
echo "Hatalı operator secimi." ;;
esac -> bitirmek için kullanılması şart olan koşul
Dizi(Array)
Kod:
#! /bin/bash
os=('ubuntu' 'windows' 'manjaro' 'FreeBSD') -> oluşturma
os[4]='mac' -> index ile değeri değiştirme
unset os[1] -> index 1'i silme
echo "${os[@]}" # Tüm elemanları yazdırma
echo "${os[0]}" # Seçili indexi yazdırma
echo "${!os[@]}" # Dizinin indislerini yazdırma
echo "${#os[@]}" # Dizinin uzunluğunu yazdırma
While Döngüsü
While döngüsü, diğer programlama dillerine çok benzer. İki bölümden oluşur. İlk bölüm döngünün durumudur. Döngü, koşul doğru olarak değerlendirildiği sürece çalışır. İkinci kısım gövdededir. Gövde yalnızca bir komuttan veya birden çok komuttan oluşabilir.
Kod:
#! /bin/bash
n=1
while [ $n -le 10 ]
do
echo "$n"
# n=$(expr $n + 1)
# n=$(( n + 1 )) (( n++ ))
sleep 1
done
#-----------ikinci örnek------------
while (( $n <= 10)) -> döngü koşılu
do-> başladığını belirtir
echo $n
(( n++ )) -> döngüden çıkmak için yapılan işlem
# bu işle önemlidir yoksa sonsuz döngüye girilir.
done-> bittiğini belirtir
#-----------üçüncü örnek------------
# "read" komutu ile döngü kurma
while read line
do
echo $line
done < test3.sh
#-----------dörtüncü örnek------------
cat test3.sh | while read line
do
echo $line
done
Until Döngüsü
Until döngüsü, hafif bir farkla while döngüsü ile hemen hemen aynıdır. Koşul yanlışsa, do ve done arasındaki komutlar çalıştırılır.
Kod:
#! /bin/bash
n=1
until [ $n -gt 10 ]
do
echo $n
(( n++ ))
done
For Döngüsü
For döngüsünün birden çok sürümü vardır. İlki, boşlukla sınırlandırılmış liste olarak verilen komutları çalıştırır. İkincisi Python döngülerini sever. Yineleme değişkenini adım adım artırarak baştan sona bir dizi sayı ve döngü alır. Sonuncusu C tarzı döngüdür. Bu tipin çalışma prensibi, döngüler için C ile tamamen aynıdır.
Kod:
#! /bin/bash
for myVar in 1 2 3 4 5
do
echo $myVar done
#----------------------------
for myVar in {1..10..2} #başlangıç..bitiş..artma oranı
do
echo $myVar
done
#----------------------------
for (( i=0; i<5; i++ ))
do
echo $i
done
For, birkaç komutu sırayla çalıştırabilir.
Kod:
#! /bin/bash
for cmd in ls pwd date
do
echo "--------------$cmd--------------"
$cmd
done
Klasördeki tüm dizinleri yazdıralım.
Kod:
#! /bin/bash
for item in *
do
if [ -d "$item" ]
then
echo "$item"
fi
done