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

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

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

Сообщение ya »

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

#!/bin/bash

while read url; do
    wget $url
done < urls.txt
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

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

Сообщение 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.
Ответить