[sisyphus] zsh/bash: подстановка значений в строку

Yuriy Kashirin =?iso-8859-1?q?yura_=CE=C1_emict=2Ecom?=
Ср Июл 18 13:44:00 MSD 2007


On Среда 18 июля 2007, Slava Semushin wrote:
> Здравствуйте!
>
> [c0der на rock ~]$ cat example
> FOO = bar
>
> [c0der на rock ~]$ /bin/bash -c 'FROM=FOO;TO=test;sed
> "s|$FROM[[:space:]]*=.*|$FROM=$TO|" example| diff -u example -'
> --- example     2007-07-18 15:51:27 +0700
> +++ -   2007-07-18 15:55:33 +0700
> @@ -1 +1 @@
> -FOO = bar
> +FOO=test
>
> [c1der на rock ~]$ /bin/zsh -c 'FROM=FOO;TO=test;sed
> "s|$FROM[[:space:]]*=.*|$FROM=$TO|" example| diff -u example -'
> zsh: bad output format specification
> [c1der на rock ~]$
>
> Почему в zsh это не работает?

zsh пытатется раскрыть $FROM с учетом того, что находится сразу после 
имени переменной в квадратных скобках (man zshparam на предмет Array 
Subscripts, насколько я понимаю).

> И можно ли как-нибудь сделать, чтобы 
> работало в обоих шеллах?

Попробовать вместо $FROM[[:space:]] написать ${FROM}[[:space:]]

>
> Спасибо заранее.



-- 
 Best regards
 Yuriy Kashirin


Подробная информация о списке рассылки Sisyphus