|
monoid
|
|
|
|
|
|
|
|
|
Рег.: 14.02.2004
|
|
Сообщений: 1689
|
|
Из: ГЗ::Б::12
|
|
Рейтинг: 1331
|
|
Shell: "$@" vs ${1+"$@"}
09.12.2009 16:50
|
|
|
Что-то я не понимаю смысл идиомы ${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
|
|
|
Если внимательно посмотреть места использования по 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
|
|
|
Да. Как выяснилось, в libtool, например, эта шняга для поддержки некоторых старых не-POSIX шеллов, которые не раскрывали "$@" в (no fields) при отстутствии параметров.
|
# |
|