ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] Вопрос по bash
@ 2004-05-03  1:30 Arcady V. Ivanov
  2004-05-03 17:47 ` Sergey Vlasov
  0 siblings, 1 reply; 3+ messages in thread
From: Arcady V. Ivanov @ 2004-05-03  1:30 UTC (permalink / raw)
  To: community

Здравствуйте.

Вот тут разглядываю конструкцию в /etc/bashrc и не могу въехать:
---------------------
# Are we an interactive shell?
if [ -z "${-##*i*}" ]; then
---------------------

${-##*i*} - что означает и в каких случаях этот if срабатывает.

-- 
Sincerely yours. Arcady.    http://www.help0.ru
---------------------------------
Linux forever! No alternatives!!!



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Comm] Вопрос по bash
  2004-05-03  1:30 [Comm] Вопрос по bash Arcady V. Ivanov
@ 2004-05-03 17:47 ` Sergey Vlasov
  2004-05-03 23:36   ` Arcady V. Ivanov
  0 siblings, 1 reply; 3+ messages in thread
From: Sergey Vlasov @ 2004-05-03 17:47 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 1058 bytes --]

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 ] проверяет именно на пустую строку.

Кстати, эта конструкция содержит ошибку - условие выполнится не только
при установленной опции i (для interactive shell), но и в том случае,
когда в $- пустая строка (не установлена ни одна опция).  Нужно либо
добавлять && [ -n "$-" ], либо написать вместо этого case.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Comm] Вопрос по bash
  2004-05-03 17:47 ` Sergey Vlasov
@ 2004-05-03 23:36   ` Arcady V. Ivanov
  0 siblings, 0 replies; 3+ messages in thread
From: Arcady V. Ivanov @ 2004-05-03 23:36 UTC (permalink / raw)
  To: community

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!!!



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-05-03 23:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-03  1:30 [Comm] Вопрос по bash Arcady V. Ivanov
2004-05-03 17:47 ` Sergey Vlasov
2004-05-03 23:36   ` Arcady V. Ivanov

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git