#linux #bash
#linux #bash
Вопрос:
Пытаюсь прочитать файл построчно, но это не работает, пробовал много разных способов, в том числе ниже:
$ cat test.sh
#!/bin/bash
echo 'line1
line2
line3
line4
;;' > list.txt
IFS=$'n'
for line in "$(cat list.txt)"
do
echo "line=$line"
echo "----"
done
Когда я запускаю:
$ ./test.sh
line=line1
line2
line3
line4
;;
----
Ответ №1:
Поскольку вы использовали кавычки при подстановке команд, $()
оболочка не выполняет разбиение слов на новую строку ( IFS=$'n'
) (и расширение имени пути), следовательно, все содержимое файла будет взято как одна строка (она есть в первой line
), вместо строк, разделенных новой строкой, для повторения.
Вам нужно убрать кавычки:
for line in $(cat list.txt)
Хотя не рекомендуется выполнять итерации по строкам файла с помощью for
— cat
комбинация используйте while
— read
вместо:
while IFS= read -r line; do ...; done <list.txt