Bash Script Yazmaya Giriş
Alex Scriven
Data Scientist
Python:
for x in range(3):
print(x)
0
1
2
R:
for (x in seq(3)){
print(x)
}
[1] 1
[1] 2
[1] 3
Bash'te temel yapı benzerdir:
for x in 1 2 3do echo $x done
1
2
3
Bash, 'brace expansion' adlı sayısal aralık oluşturmanın pratik bir yoluna sahiptir:
{START..STOP..INCREMENT}for x in {1..5..2}do echo $x done
1
3
5
FOR döngülerini yazmanın bir diğer yolu 'üç ifade' sözdizimidir.
x=2)x<=4)x+=2)
for ((x=2;x<=4;x+=2))
do
echo $x
done
2
4
Bash, dizindeki dosyalar gibi kalıp eşleştirmeyi * ile bir for döngüsünde genişletmeye izin verir.
Örneğin, /books klasöründe iki metin dosyası olduğunu varsayalım:
for book in books/*
do
echo $book
done
books/book1.txt
books/book2.txt
$() gösterimiyle kabuk içinde kabuk oluşturmayı hatırlıyor musunuz?
Bunu bir for döngüsünde yerinde çağırabilirsiniz!
Klasör yapısının şöyle olduğunu varsayalım:

Kabuk-içi-kabuk çağrısının sonucunda döngü kurabiliriz:
for book in $(ls books/ | grep -i 'air')do echo $book done
AirportBook.txt
FairMarketBook.txt
FOR döngüsüne benzer. Ancak her yinelemede test edilen bir koşul belirlersiniz.
Koşul sağlandığı sürece yineleme sürer!
for yerine while kullanın-le)&& (VE) veya || (VEYA) ile zincirlenebilir ya da çift parantez kullanılabilirBasit bir örnek:
x=1while [ $x -le 3 ];do echo $x ((x+=1)) done
1
2
3
Kırılma koşulu hiç sağlanmazsa sonsuz WHILE döngüsüne dikkat edin.
x=1
while [ $x -le 3 ];
do
echo $x
# x artırılmıyor. Asla 3'e ulaşmaz!
# ((x+=1))
done
Bu, 1'i sonsuza dek yazdırır!
Bash Script Yazmaya Giriş