Как читать полную строку в цикле «за» с пробелами

Я пытаюсь запустить цикл for для файла, и я хочу отобразить всю строку. Но вместо этого он отображает только последнее слово. Мне нужна полная линия.

 for j in `cat ./file_wget_med` do echo $j done 

результат после запуска:

 Found. 

Вот мои данные:

 $ cat file_wget_med 2013-09-11 14:27:03 ERROR 404: Not Found. 

for разделения цикла, когда он видит любые пробелы, такие как пробел, табуляция или новая строка. Таким образом, вы должны использовать IFS (внутренний разделитель полей) :

 IFS=$'\n' # make newlines the only separator for j in $(cat ./file_wget_med) do echo "$j" done 

for циклов, разделенных по любым пробелам (пробел, табуляция, новая строка) по умолчанию; самый простой способ работы с одной строкой за один раз – использовать вместо этого цикл while read , который разбивается на строки новой строки:

 while read i; do echo "$i"; done < ./file_wget_med 

Я бы ожидал, что ваша команда выплюнет одно слово в строке (это случилось, когда я проверил его с собственным файлом). Если что-то еще происходит, я не уверен, что может вызвать его.

 #!/bin/bash files=`find <subdir> -name '*'` while read -r fname; do echo $fname done <<< "$files" 

Проверенная работа, а не тот, который вы, возможно, хотите, но это невозможно сделать элегантно.