прикол
- From
- Artem S. Ignatiev (2:5020/2395)
- To
- Vlad Gnatov
- Date
- 2006-11-09T00:04:50Z
- Area
- RU.UNIX.BSD
Вижу вас хорошо --- слышу вас плохо, Vlad!
08 ноя 06 23:11, ты слова я про всяких Re: прикол:
VG>>> А вообще, builtin ${0##*/} ${1+"$@"} это шаблон для запуска
VG>>> встроенной команды в шелле, с передачей ей всех аргументов
VG>>> коммандной строки.
AS>> Что подозрительно -- у меня в man sh синтаксис ${parameter+word}
AS>> не
VG> описан.
AS>> Есть ${parameter:+word}
VG> Перечетайте. Можно вслух и с выражением.
Влад, спасибо. Но ВЫ меня носом не туда тыкаете.
Ссылка на правильный вариант уже была:
In the parameter expansions shown previously, use of the colon in the
format results in a test for a parameter that is unset or null; omission
of the colon results in a test for a parameter that is only unset.
Это из
$FreeBSD: src/bin/sh/sh.1,v 1.102.2.2 2005/12/26 15:43:54 stefanf Exp $
VG> ${parameter+word}:
VG> parameter Set and Not Null -> substitute word
VG> parameter Set But Null -> substitute word
VG> parameter Unset -> substitute null
VG> ${parameter##word}:
VG> Remove Largest Prefix Pattern. The word shall be expanded to produce
VG> a pattern. The parameter expansion shall then result in parameter,
VG> with the largest portion of the prefix matched by the pattern deleted.
А это откуда?
AS>> Что не помогает мне понять, почему не builtin ${0##*/} "$@"
VG> Потому что в старых борнах (до SRV3) при отсутствии агрументов $@
VG> раскрывался в Set But Null вместо Unset.
Интересно
VG> Данная конструкция проверяет $1 и если он Unset, то делает Unset и $@
А вот это вот неправда даже по тому куску мана, что Вы привели. Если оно делает Unset $@, то, ввиду недокументированности, это бага, а не фича.
VG> p.s. Вы как-нибудь в configure любой загляните - узнаете много нового
VG> ')
Десятки килобайт нового за раз -- это как-то слишком.
ZaZooBred [team Бородатые] [ICQ: 67440949]
--- Я хожу, как дурак, без блокнота
* Origin: Зато года идут, а печень всё не меньше (2:5020/2395)
SEEN-BY: 50/12 400/814 450/1024 5000/5000 5011/13 5012/46 5015/28 5019/31
SEEN-BY: 5020/400 545 2238 2395 2871 4441 5021/29 5025/3 5027/12 5030/1080
SEEN-BY: 5030/1957 5035/38 5045/7 5054/1 4 8 9 11 28 35 36 37 45 63 66 67 70
SEEN-BY: 5054/75 84 85 5059/9 5062/10 5063/3 5064/7 5076/1 5077/70 5080/1003
SEEN-BY: 5084/9 5085/13 5095/20 5096/18 6001/10
PATH: 5020/2395 545 5054/1 37