[Comm] Вопрос по bash
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Пн Май 3 21:47:02 MSD 2004
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.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/community/attachments/20040503/66db2b75/attachment-0003.bin>
Подробная информация о списке рассылки community