From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <4096D795.5000900@help0.ru> Date: Tue, 04 May 2004 12:36:53 +1300 From: "Arcady V. Ivanov" Organization: Help Ltd. User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.6) Gecko/20040213 X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: community@altlinux.ru Subject: Re: [Comm] =?KOI8-R?Q?=F7=CF=D0=D2=CF=D3_=D0=CF_bash?= References: <4095A09F.6090901@help0.ru> <20040503174702.GA2229@sirius.home> In-Reply-To: <20040503174702.GA2229@sirius.home> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.4 Precedence: list Reply-To: community@altlinux.ru List-Id: Mailing list for ALT Linux users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 May 2004 23:37:01 -0000 Archived-At: List-Archive: List-Post: Sergey Vlasov пишет: >On Mon, May 03, 2004 at 02:30:07PM +1300, Arcady V. Ivanov wrote: > > >>Вот тут разглядываю конструкцию в /etc/bashrc и не могу въехать: >>--------------------- >># Are we an interactive shell? >>if [ -z "${-##*i*}" ]; then >>--------------------- >> >>${-##*i*} - что означает и в каких случаях этот if срабатывает. >> >> > >Переменная $- содержит набор установленных опций shell (см. описание >set builtin в man bash). Конструкция ${NAME##PATTERN} раскрывается в >значение $NAME, в котором из начала удалена подстрока максимально >возможной длины, соответствующая шаблону PATTERN. Т.е. в данном >случае, если в $- не содержалась буква i, в результате получится >исходное значение $-; если содержалась - получится пустая строка; >далее [ -z STR ] проверяет именно на пустую строку. > > Спасибо. Теперь понял, что "-" это переменная. И наконец-то прочитал об этом в описании bash :-) . >Кстати, эта конструкция содержит ошибку - условие выполнится не только >при установленной опции i (для interactive shell), но и в том случае, >когда в $- пустая строка (не установлена ни одна опция). Нужно либо >добавлять && [ -n "$-" ], либо написать вместо этого case. > Эта строка, кстати, из /etc/bashrc Master 2.2 -- Sincerely yours. Arcady. http://www.help0.ru --------------------------------- Linux forever! No alternatives!!!