Выбор ответа Junior Bash-скрипты спрашивают часто обновлено
Чтение файла построчно
Вопрос
Как правильно обработать файл hosts.txt построчно, если в строках бывают пробелы?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: while IFS= read -r line; do ...; done < hosts.txt. while read читает ровно по строке; IFS= сохраняет ведущие и конечные пробелы, -r не трактует обратный слеш как экранирование. for ... $(cat ...) режет по пробелам и раскрывает маски. for line in hosts.txt переберёт одно слово, имя файла.
Варианты ответа
while IFS= read -r line; do ...; done < hosts.txtправильный ответfor line in $(cat hosts.txt); do ...; donefor line in hosts.txt; do ...; donecat hosts.txt | for line; do echo "$line"; done
Разбор
while read читает ровно по строке; IFS= сохраняет ведущие и конечные пробелы, -r не трактует обратный слеш как экранирование. for ... $(cat ...) режет по пробелам и раскрывает маски. for line in hosts.txt переберёт одно слово, имя файла. Последний вариант это не синтаксис bash.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.