#!/bin/bash
seq 1 5 >file.txt
for i in $(<file.txt);do
echo $i
read -p 'press ENTER'
done
echo ---
while read i;do
echo $i
read -p 'press ENTER'
done <file.txt
rm file.txt
#--
Сохраняем в файл
loop3.shchmod +x loop3.sh
Создаем файл из пяти нумерованных строк.
seq 1 5 > file.txt
Блок
for: читаем файл, и выводим построчно. После каждой строки жмем ENTER для продолжения.Блок
while - тело цикла - один в один.Запускаем:
./loop3.sh1
press ENTER
2
press ENTER
3
press ENTER
4
press ENTER
5
press ENTER
---
1
3
5
Часть срок второго цикла потерялась. ENTER нажимать никто не просил.
Все дело в том, что циклы работают принципиально по-разному.
Цикл
for in сначала вычисляет/считывает все значения для перебора в память, потом начинает с ними работать.Цикл
while(until) читает последовательно, по одному значению. Мало того в данном случае цикл работает НЕ С ФАЙЛОМ НАПРЯМУЮ, а с stdin, (куда мы перенаправляем файл) поэтому любое чтение stdin приводит к чтению записи файла. Результат вы видели.Продолжение следует...
tags: #bash © by Tagd Tagd
—
🔔 @bashdays➡️ @gitgate