Страница 1 из 1

построчное считывание файла и обработка каждой строки

Добавлено: 20 дек 2024, 08:49
ya

Код: Выделить всё

#!/bin/bash

while read url; do
    wget $url
done < urls.txt

Re: построчное считывание файла и обработка каждой строки

Добавлено: 26 мар 2025, 00:06
ya

Код: Выделить всё

#!/bin/bash

LineCount=0

while IFS='' read -r LinefromFile || [[ -n "${LinefromFile}" ]]; do

  ((LineCount++))
  echo "Reading line $LineCount: ${LinefromFile}"

done < "$1"
передаем имя файла, который мы хотим, чтобы скрипт обрабатывал, в качестве параметра командной строки. Это будет единственный параметр, поэтому внутри скрипта $1 будет храниться имя файла. Мы перенаправляем этот файл в цикл while.

Цикл while устанавливает внутренний разделитель полей в пустую строку, используя присваивание IFS=. Это не позволяет команде read разбивать строки по пробелам. Только возврат каретки в конце строки считается истинным концом строки.

Предложение [[ -n \$ {LinefromFile}\ ]] учитывает возможность того, что последняя строка в файле не заканчивается символом возврата каретки. Даже если это не так, эта последняя строка будет обработана правильно и будет рассматриваться как обычная строка, совместимая с POSIX.