From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 28 Aug 2012 10:46:52 +0400 From: Alexey Tourbin To: sisyphus@lists.altlinux.org Message-ID: <20120828064652.GC18053@altlinux.org> Mail-Followup-To: sisyphus@lists.altlinux.org References: <503B789A.50305@kde.kiev.ua> <20120827155645.GA18053@altlinux.org> <503BC835.3010707@kde.kiev.ua> <20120827211738.GA14190@altlinux.org> <503C5A46.4010209@kde.kiev.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <503C5A46.4010209@kde.kiev.ua> Subject: Re: [sisyphus] bash X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Sisyphus discussions List-Id: ALT Linux Sisyphus discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Aug 2012 06:46:52 -0000 Archived-At: List-Archive: List-Post: On Tue, Aug 28, 2012 at 08:42:30AM +0300, Denis Kuznetsov wrote: > Таки интересная ситуация... > Согласно: > http://www.gnu.org/software/bash/manual/bashref.html#Quote-Removal > http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching > А также: > $ shopt | grep extglob > extglob on > А еще: > $ ls +([0-9A-z]) > $ rpm -qf $SHELL > bash-3.2.51-alt1 > Все укладывается в синтаксис bash-3.2.51 > вошедшего в p6. > > При проверке синтаксиса: > $ echo 'ls +([0-9A-z])' | bash -n > bash: line 1: syntax error near unexpected token `(' > bash: line 1: `ls +([0-9A-z]) Вы правы, это расширенный синтаксис: $ echo 'ls +([0-9A-z])' |bash -n bash: line 1: syntax error near unexpected token `(' bash: line 1: `ls +([0-9A-z])' $ echo 'ls +([0-9A-z])' |bash -O extglob -n $ Выходит что, к сожалению, выполнение текущей команды может влиять на синтаксический разбор последующей команды - получается такой недо-перл (в перле команды, модифицирующие синтаксис, выполняются безусловно, даже в режиме syntax check). Кстати, диапазон [A-z] является некорректным, но никто не жалуется. То есть он к синтаксису не относится, а круглые скобки - относятся. Интересно, как всё это вообще работает. :-) > Возникает вопрос, как это обойти в Sisyphus и > p6? Простого способа передать "-O extglob" в shell.req пока нету. Можно избирательно отключить поиск зависимостей в проблемном скрипте: %add_findreq_skiplist */usr/bin/zpool_layout либо менее избирательно: AutoReq: yes, noshell Тогда часть зависимостей, если в скриптах есть самостоятельные нетривиальные зависимости, нужно будет написать вручную. > Эту же проблему наблюдаю на CentOS 6.1 и FreeBSD > (но они мне побоку). > > > 28.08.2012 00:17, Dmitry V. Levin пишет: > >On Mon, Aug 27, 2012 at 10:19:17PM +0300, Denis Kuznietsov wrote: > >>27.08.2012 18:56, Alexey Tourbin пишет: > >>>Копать туда, что shell syntax check у этого > >>>скрипта не проходит: > >>> > >>>$ sh -n test.sh > >>>test.sh: line 9: syntax error near unexpected token `(' > >>>test.sh: line 9: ` ls > >>>${LABEL}-+([0-9a-f])-switch-port:${p}-slot:+([0-9]) \' > >>> > >>>Соответственно, rpm не дает запаковать > >>>этот скрипт в абсолютно > >>>неработающем виде, есть считается, что > >>>это /bin/sh или /bin/bash скрипт. > >>Да это баш. подозреваю что может даже 4-ка > >Нет, вышепроцитированное не > >укладывается в синтаксис bash 4-й версии.