Re: zsh
On Sat, Aug 02, 2008 at 11:12:10AM +0400, Artem Chuprina wrote:
> Stanislav Maslovski -> debian-russian@lists.debian.org @ Sat, 2 Aug 2008 09:23:35 +0400:
>
> SM> Бог с ним, с эхо. Меня заинтересовало, что в ожидаемом мной
> SM> контексте eval, в частности, когда я пытаюсь присвоить некое
> SM> значение параметру TEST, я, к удивлению своему, обнаруживаю, что
> SM> оно зависит от наличия или отсутствия в текущей директории
> SM> какого-то не имеющего отношения к делу файла.
>
> А до eval к этому моменту дело еще не дошло. Это мы все еще раскрываем
> `./test`, выполнять результат мы еще не начали.
Угу.
> Проверить можно, заменив eval на : ("do nothing").
>
> Вообще же обычно если хочется сделать eval выводу команды, то надо писать
>
> eval "`cmd`"
Согласно документации на POSIX шелл:
"The eval utility shall construct a command by concatenating arguments
together, separating each with a <space>. The constructed command shall
be read and executed by the shell."
То есть, строго говоря, в общем случае двойные кавычки не обязательны.
Зависит от желаемого эффекта.
Но в _моем_примере_ двойные кавычки именно там и нужны.
> Парсить строку eval будет сам. Хотя от GLOB_SUBST, согласно
> документации, это не спасает.
А ты проверил?
Если в моем примере делать так
% eval "`./test`"
то результат не подвергнется filename generation.
Внутри двойных кавычек "*" -- простой символ.
==========================================================================
% cat ~/.zshenv
setopt sh_option_letters sh_word_split glob_subst no_notify posix_builtins
% ls -l
total 4
-rw-r--r-- 1 stas stas 0 2008-08-02 11:59 TEST='111'
-rw-r--r-- 1 stas stas 0 2008-08-02 11:59 TEST='222'
-rwxr-xr-x 1 stas stas 26 2008-08-02 11:42 test
% ./test
TEST='*'
% eval `./test`
[stas@shota:/tmp/a]
% echo "$TEST"
222
% eval "`./test`"
% echo "$TEST"
*
==========================================================================
--
Stanislav
Reply to:
- Follow-Ups:
- Re: zsh
- From: Artem Chuprina <ran@ran.pp.ru>
- References:
- zsh
- From: Stanislav Maslovski <stanislav.maslovski@gmail.com>
- Re: zsh
- From: Artem Chuprina <ran@ran.pp.ru>
- Re: zsh
- From: Stanislav Maslovski <stanislav.maslovski@gmail.com>
- Re: zsh
- From: Artem Chuprina <ran@ran.pp.ru>
- Re: zsh
- From: Stanislav Maslovski <stanislav.maslovski@gmail.com>
- Re: zsh
- From: Artem Chuprina <ran@ran.pp.ru>
- Re: zsh
- From: Stanislav Maslovski <stanislav.maslovski@gmail.com>
- Re: zsh
- From: Artem Chuprina <ran@ran.pp.ru>