On Fri, Sep 21, 2007 at 06:59:03PM +0400, Dmitry V. Levin wrote: > On Fri, Sep 21, 2007 at 06:24:46PM +0400, Alexey Tourbin wrote: > > On Fri, Sep 21, 2007 at 05:37:50PM +0400, Dmitry V. Levin wrote: > > > On Fri, Sep 21, 2007 at 05:05:07PM +0400, Alexey M. Tourbin wrote: > > > [...] > > > > if [ -n "${RPM_BUILD_ROOT-}" ] && [ -z "${rep##$RPM_BUILD_ROOT*}" ]; then > > > > > > Этот код не будет работать правильно при пустом значении RPM_BUILD_ROOT. > > > > Обоснуй. > > OK, будет и так работать. Да это же по сути код if [ -n "$RPM_BUILD_ROOT" ] && [ -z "${rep##$RPM_BUILD_ROOT*}" ]; then ... в котором при первом использовании RPM_BUILD_ROOT добавлен минус, потому что скрипты работают в режиме 'sh -u'. Минус означает что "я действительно знаю, что такой переменной может и не быть, это не опечатка". Кстати, код if [ -n "${RPM_BUILD_ROOT-}" -a -z "${rep##$RPM_BUILD_ROOT*}" ]; then ... в этом отношении уже не проканает, потому что с точки зрения шелла это одна и та же команда, и если первый минус "гасит" -u, то во втором RPM_BUILD_ROOT минуса уже нет, а подстановка происходит всех переменных СРАЗУ (до интерпретации), и шелл по идее должен вывалиться.