Выбор ответа Junior Bash-скрипты спрашивают часто обновлено

Чтение файла построчно

Вопрос

Как правильно обработать файл hosts.txt построчно, если в строках бывают пробелы?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: while IFS= read -r line; do ...; done < hosts.txt. while read читает ровно по строке; IFS= сохраняет ведущие и конечные пробелы, -r не трактует обратный слеш как экранирование. for ... $(cat ...) режет по пробелам и раскрывает маски. for line in hosts.txt переберёт одно слово, имя файла.

Варианты ответа

  1. while IFS= read -r line; do ...; done < hosts.txtправильный ответ
  2. for line in $(cat hosts.txt); do ...; done
  3. for line in hosts.txt; do ...; done
  4. cat hosts.txt | for line; do echo "$line"; done

Разбор

while read читает ровно по строке; IFS= сохраняет ведущие и конечные пробелы, -r не трактует обратный слеш как экранирование. for ... $(cat ...) режет по пробелам и раскрывает маски. for line in hosts.txt переберёт одно слово, имя файла. Последний вариант это не синтаксис bash.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.