Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=9127507&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 08:47:37 2016
Кодировка: Windows-1251
Shell: "$@" vs ${1+"$@"} - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Shell: "$@" vs ${1+"$@"}
      09.12.2009 16:50
2

Что-то я не понимаю смысл идиомы ${1+"$@"}
Если левая часть ($1) неопределена, + возвращает левую часть, иначе возвращает правую часть ("$@")
Но если $1 неопределен, то параметров нет и "$@" также раскрывается в пустоту (zero fields)
Так что у меня получается, что "$@" и ${1+"$@"} должны быть эквивалентны. Что я упускаю?
Google code search находит много употреблений этой идиомы



#
Vovkaii
Carpal Tunnel

Рег.: 08.11.2003
Сообщений: 3920
Из: Espoo
Рейтинг: 3268
  Re: Shell: "$@" vs ${1+"$@"} [re: monoid]
      09.12.2009 17:38
 

Пофигу, судя по тому, что пишут в config.status

code:
# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi





Сделай это сам
monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: Shell: "$@" vs ${1+"$@"} [re: Vovkaii]
      09.12.2009 18:12
 

Но явно же была причина писать более сложную форму ${1+"$@"} в сотне мест вместо более простой "$@"?



#
Vovkaii
Carpal Tunnel

Рег.: 08.11.2003
Сообщений: 3920
Из: Espoo
Рейтинг: 3268
  Re: Shell: "$@" vs ${1+"$@"} [re: monoid]
      09.12.2009 18:33
2

Если внимательно посмотреть места использования по google code search, то 99.9% это ltmain, ltconfig, config.status, ylwrap и т.д., то есть ноги растут из одного места - autotools, что полностью объясняет, почему много результатов выдается при поиске, и частично объясняет, почему так криво сделано.
Теоретически, может такая запись важна в csh, ash, ksh или еще в каком-нибудь экзотичном месте.



Сделай это сам
monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: Shell: "$@" vs ${1+"$@"} [re: Vovkaii]
      09.12.2009 20:33
1

Да. Как выяснилось, в libtool, например, эта шняга для поддержки некоторых старых не-POSIX шеллов, которые не раскрывали "$@" в (no fields) при отстутствии параметров.



#
Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
1 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в