URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6831
[ Назад ]

Исходное сообщение
"Bash@Linux: цикл for  "

Отправлено dekanovich , 12-Окт-07 11:03 
Как в конструкции типа

for file in `find .`; do
     <blah blah blah>
done

заставить for реагировать только на переносы строки?
То есть сейчас если find находит файл "/tmp/some\ file.foo" он выполняет две итерации с
file=/tmp/some и file=file.foo
Нужно только одну итерацию с file=/tmp/some\ file.foo
Как?

З.Ы. Что-то типа опции --print0 в xargs, как я понимаю.



Содержание

Сообщения в этом обсуждении
"Bash@Linux: цикл for  "
Отправлено madskull , 12-Окт-07 11:17 
1. Изменить переменную IFS
2. Использовать while
find . | while read file; do  <blah blah blah> ; done

"Bash@Linux: цикл for  "
Отправлено dekanovich , 12-Окт-07 12:00 
>1. Изменить переменную IFS
>2. Использовать while
>find . | while read file; do  <blah blah blah> ; done

Воспользовался вторым способом, все ОК.
Спасибо!


"Bash@Linux: цикл for  "
Отправлено vic , 12-Окт-07 13:42 
может все проще?:
for file in * ; do
   echo "|${file}|"
done

"Bash@Linux: цикл for  "
Отправлено Пользователь , 12-Окт-07 13:57 
>может все проще?:
>for file in * ; do
>   echo "|${file}|"
>done

а разве ж какой-то шелл * разворачивает рекурсивно?  



"Bash@Linux: цикл for  "
Отправлено vic , 12-Окт-07 14:49 
>>может все проще?:
>>for file in * ; do
>>   echo "|${file}|"
>>done
>
>а разве ж какой-то шелл * разворачивает рекурсивно?

нет конечно, просто может все проще и в условии задачи не требуется лезть в подкаталоги.


"Bash@Linux: цикл for  "
Отправлено dekanovich , 12-Окт-07 15:06 
>нет конечно, просто может все проще и в условии задачи не требуется
>лезть в подкаталоги.

Как раз подкаталоги и интересуют :)


"Bash@Linux: цикл for  "
Отправлено phpcoder , 15-Окт-07 13:03 
>а разве ж какой-то шелл * разворачивает рекурсивно?

У меня zsh так делает ;-)