Вы уже познакомились с циклом while. С помощью него можно обеспечить выполнение команд списка до тех пор, пока условие не станет ложным. Если же требуется выполнить команду строго определенное число раз, удобно использовать цикл for:
for var in список_значений
do список
done
Оператор for обеспечивает выполнение цикла столько раз, сколько слов в списке значений. При этом переменная var последовательно принимает значения, равные словам из списка. Список может формироваться различными способами, например, как вывод некоторой команды (имя_команды_формирующей_список).
Создайте скрипт с данным кодом и запустите его.
#!/bin/bash
for i in `seq 0 9`
do
echo $i
done
Каков будет вывод после запуска скрипта? Проверьте себя, создав скрипт с данным кодом и запустив его.
#!/bin/bash
for i in `seq 1 10`
do
echo $i*$i = $((i*i))
done
В данных примерах команда seq start step stop генерирует арифметическую последовательность и соответствует функции range в python. Однако в качестве списка значений можно использовать не только числа, например, следующий скрипт выведет список файлов, содержащихся в текущей директории:
#!/bin/bash
for i in `ls`
do
echo $i
done
Функция ls после выполнения вернет список файлов в текущей директории, а переменная i примет последовательно значения каждого элемента данного списка.
Что произойдет при запуске данных скриптов? Проверьте себя, запустив код.
#!/bin/bash
a='Mary will eat only things starting with "a". What will eat Mary? She can choose from apples, bananas, ananas, milk, meat, oranges, yogurt, cheese, avocado.'
echo $a
for i in $a
do
case $i in
a*)
echo -n "$i "
;;
esac
done
echo "Great job!"
#!/bin/bash
read n
for i in `seq 0 1 $n`
do
echo "This is the file number $i." > file$i.txt
done
Источник:
https://cs.mipt.ru/gertsev/os-linux/lessons/10_for.html