Вступ до Bash Scripting
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 подібна:
for x in 1 2 3do echo $x done
1
2
3
У Bash є зручний спосіб створити числовий діапазон — «brace expansion»:
{START..STOP..INCREMENT}for x in {1..5..2}do echo $x done
1
3
5
Ще один поширений спосіб — синтаксис «трьох виразів».
x=2)x<=4)x+=2)
for ((x=2;x<=4;x+=2))
do
echo $x
done
2
4
Bash також дозволяє розширення за шаблоном у циклі for за допомогою символу *, наприклад для файлів у каталозі.
Наприклад, припустімо, що в теці /books є два текстові документи:
for book in books/*
do
echo $book
done
books/book1.txt
books/book2.txt
Пам'ятаєте створення «оболонки в оболонці» через запис $()?
Її можна викликати безпосередньо в циклі for!
Припустімо, структура теки така:

Можна пройтися циклом по результату виклику «оболонки в оболонці»:
for book in $(ls books/ | grep -i 'air')do echo $book done
AirportBook.txt
FairMarketBook.txt
Подібно до циклу FOR, але ви задаєте умову, яку перевіряють на кожній ітерації.
Ітерації тривають, доки умова виконується.
while замість for-le)&& (AND) чи || (OR)Ось простий приклад:
x=1while [ $x -le 3 ];do echo $x ((x+=1)) done
1
2
3
Остерігайтесь нескінченного циклу WHILE, якщо умова виходу ніколи не спрацьовує.
x=1
while [ $x -le 3 ];
do
echo $x
# don't increment x. It never reaches 3!
# ((x+=1))
done
Це виводитиме 1 без кінця!
Вступ до Bash Scripting