Online video hd

Смотреть русское видео

Официальный сайт nokia 24/7/365

Смотреть видео бесплатно

igorp1024 15.02.2010 13:12

Tips & tricksIFS, Пробелы и однострочники

Проблему с обработкой имён файлов, содержащих пробелы, часто предлагается решать с помощью замены for на while/read.
Это можно проще - через переменную IFS, определив её значение как
1
IFS=$'\n'



Пример однострочника:
1
IFS=$'\n'; for F in `echo "hellow orld #1"; echo; echo "hellow orld #2"`; do echo \>\>"$F"\<\< ; done


Вывод:
>>hellow orld #1<<
>>hellow orld #2<<


Поиском статей с данным советом не нашёл. Изредка упоминается да и то только в тексте двух скриптов и одном комменте (и то вскользь).


Тэги:
+ 4 -
Похожие Поделиться

imurzich 15.02.2010 13:48 #
+ 0 -
Вот чуть более развёрнутое упоминание использования IFS - Using the Bash IFS variable to make for loops split with non whitespace characters
igorp1024 15.02.2010 13:53 #
+ 0 -
Не согласен. :)
Там в качестве примера предлагается использовать запятую. Причём, парсится строка уже разделённая запятыми. В моём же примере - это перевод строки, генерируемый той же ls, например.
Цель постига - показать, как легко решить проблему с пробелами в однострочниках.
KblCb 15.02.2010 14:39 #
+ 2 -
Если люди лишены абстрактного мышления и не способны заменить запятую из примера на перевод строки то им уже мало что поможет. Добавлю свои пять копеек:
( IFS=$'\n'; for F in `echo "hellow orld #1"; echo; echo "hellow orld #2"`; do echo \>\>"$F"\<\< ; done )
в таком варианте замена IFS произойдёт локально и по выходу из скобок разделитель будет прежний.
igorp1024 15.02.2010 14:51 #
+ 0 -
Если люди лишены абстрактного мышления и не способны заменить запятую из примера

Оки, согласен. Просто хотел сказать, что пример в статье искуственнен и оторван от жизни. Я хотел показать, как починить все однострочники, а не рассказать о IFS. :)
KblCb 15.02.2010 16:05 #
+ 2 -
Ну так кто бы спорил. Просто у IFS может быть и иное применение: он может запросто заменить cut для превращения списка из непригодного в пригодный для bash вид. Например вместо:for path in $(echo $PATH|cut -d ':'); do ls $path; doneможно написать:( IFS=":"; for path in $PATH; do ls $path; done )
kstep 15.02.2010 16:48 #
+ 1 -
Сложно починить однострочник с помощью использования IFS без знания, что же такое этот IFS...
igorp1024 15.02.2010 16:52 #
+ 0 -
Будем считать, что это рецепт из серии: "Скорее всего, Вам нужно именно это..." :)
masai 15.02.2010 13:56 #
+ 0 -
Спасибо! Вы этим постом сильно упростили мне жизнь?
masai 15.02.2010 13:57 #
+ 0 -
Спасибо! Вы этим постом сильно упростили мне жизнь!
muhas 16.02.2010 00:02 #
+ 0 -
Ижно два раза упростил :)
А по сабжу: в posix sh работает? (Проверить не могу ибо с телефона да и читать много уже лень, а любопытсво имеется)

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн