[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: zsh



Stanislav Maslovski -> debian-russian@lists.debian.org  @ Sat, 2 Aug 2008 12:09:19 +0400:

 >> Проверить можно, заменив eval на : ("do nothing").
 >> 
 >> Вообще же обычно если хочется сделать eval выводу команды, то надо писать
 >> 
 >> eval "`cmd`"

 SM> Согласно документации на POSIX шелл:

 SM> "The eval utility shall construct a command by concatenating arguments
 SM> together, separating each with a <space>. The constructed command shall
 SM> be read and executed by the shell."

 SM> То есть, строго говоря, в общем случае двойные кавычки не обязательны.
 SM> Зависит от желаемого эффекта.

 SM> Но в _моем_примере_ двойные кавычки именно там и нужны.

Ключевое слово в моей фразе - "обычно".

 >> Парсить строку eval будет сам.  Хотя от GLOB_SUBST, согласно
 >> документации, это не спасает.

 SM> А ты проверил?

Нет.  "Согласно документации".

 SM> Если в моем примере делать так
 SM> % eval "`./test`"

 SM> то результат не подвергнется filename generation.
 SM> Внутри двойных кавычек "*" -- простой символ. 

Может, и подвергнется, но поскольку кавычки внешние по отношению к
command substitution, то * оказывается quoted.  А filename generation
работает только на unquoted.

Правила операций с командной строкой в шелле отнюдь не отличаются
простотой, что да, то да...

-- 
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru

The Eclipse Platform is an open and extensible platform
for anything and yet nothing in particular.
 -- apt-cache show eclipse-platform


Reply to: