[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