[Comm] Re: [Comm] извращения с find и shell - кто неправ?

Andrew Grechko =?iso-8859-1?q?a=5Fgr_=CE=C1_mail=2Eru?=
Вс Ноя 17 02:38:50 MSK 2002


17 Ноябрь 2002 00:17, ASA wrote:
<skip> 
> Первое echo выводит все как полагается, потому что find
> вызывает echo напрямую без помощи sh
это я понял...
> а второй -exec вызывает sh и его параметры выглядят так:
> sh -c N=./тестовый~$файл ; /bin/echo "N=$N"
> при парсинге этих параметров sh не находит переменной "$файл"
> и подставляет пустую строку. Во всем этом можешь убедиться,
что виноват неэкранированный $ - тоже ясно было, но вот 
"физического смысла" не увидел. Стыдно.
> подставив ps f вместо /bin/echo, и сделав простое тестовое имя
действительно удобно так смотреть, спасибо, возьму на заметку
> файла из латинских букв - ps на него ругаться не будет.
>
> Короче, лечить надо заменой N="{}" на N='{}'
>
> Вот так у меня сработало. обрати внимание на порядок
> последних " и '
Откровенно говоря, про порядок не вполне понял. Буду думать. 
>
> find . -type f -exec echo {} \; -exec sh -c " N='{}' ;
> /bin/echo "'N=$N' \;

Мне как-то понятнее показалось 
find .  -type f -exec echo {} \;  -exec sh -c " N='{}' ; 
/bin/echo "'N=$N'" " \;

Спасибо!



-- 

With best regards,
Andrew Grechko




Подробная информация о списке рассылки community