прикол

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